cancel
Showing results for 
Search instead for 
Did you mean: 

[résolu] faire un lien vers un fichier externe

ethan
Champ in-the-making
Champ in-the-making
Bonjour Smiley Happy

Je sais que sous Alfresco il existe déjà une action appelée download qui récupère le fichier sélectionné du repository pour le proposer en téléchargement à l'utilisateur. Moi j'aimerais avoir une action télécharger qui aille chercher le fichier courant sur un serveur distant. J'ai pensé modifier l'action download avant de me rabattre sur la solution "créer sa propre action et l'ajouter à la liste des actions des fichiers indexés".

J'ai crée une action download_file que j'ai déclarée dans mon fichier web-client-config-custom.xml de la façon suivante:

<action id="download_file" replace="true">
   <permissions>
      <permission allow="true">Read</permission>
   </permissions>
   <label-id>download_file</label-id>
   <image>/custom/images/icons/download.gif</image>
   <action>download-file</action>
</action>

J'ai aussi crée un fichier de contexte pour cette action, download-file-action-context.xml :

<beans>
     
    <!– Download Action Bean –>
    <bean id="download-file" class="custom.alfresco.customUI.actions.DownloadActionExecuter" parent="action-executer" lazy-init="true">
       <property name="nodeService">
         <ref bean="NodeService" />
      </property>
      <property name="exchangeServerIP" value="192.168.20.241" />
      <property name="fileServerIP" value="192.168.20.221" />
      <property name="filesRootFolderPath" value="/company/shared/" />
      <property name="publicAction">
           <value>false</value>
         </property>
   
   </bean>
  
      <!– Action properties –>
   <bean id="extension.actionResourceBundles" parent="actionResourceBundles">
      <property name="resourceBundles">
         <list>
            <value>alfresco.extension.download-file-action-messages</value>
         </list>
      </property>
   </bean>
     
</beans>

En lisant quelques topics, j'ai cru comprendre qu'on peut injecter des paramètres dans la bean de l'action via le tag <property>. Donc j'en ai mis trois pour mon action ( exchangeServerIP / fileServerIP et fileRootFolderPath ) car j'ai besoin de ces paramètres dans le code de ma classe java DownloadFile. Cependant, je ne suis pas certain de la méthode à utiliser pour récupérer ces paramètres dans ma classe. Est ce que de simples get et set avec le nom des propriétés définies dans le fichier xml suffisent pour pouvoir les utiliser ou bien il faut faire autre chose?

Deuxièmement, concernant la déclaration de mon action dans le fichier web-client-config-custom.xml, j'ai lu dans certains exemples que le tag <action-listener> était utilisé. Je ne comprend pas bien à quoi sert cette classe et si elle est obligatoire? Je n'ai pas trouvé de documentation précise sur le sujet. Pourriez-vous m'aider sur ce point également?

Merci par avance Smiley Happy
11 REPLIES 11

rivarola
Champ on-the-rise
Champ on-the-rise
Bonjour,

Si la classe Java existe déjà il sera assez facile de la transformer en extension FreeMarker afin d'en faire une variable globale accessible depuis tous les ftl (voir http://wiki.alfresco.com/wiki/Template_Guide#Custom_Root_Objects). En général cette classe Java hérite de BaseTemplateProcessorExtension (ou à défaut implémente l'interface TemplateProcessorExtension).

ethan
Champ in-the-making
Champ in-the-making
J'ai fini par réussir à obtenir le comportement que je souhaitais. Je n'ai pas utilisé de template freemarker car créer une url n'était pas la bonne solution en définitive. Je suis reparti sur l'idée d'utiliser une custom action et d'ajouter un actionLink dans la UI et j'ai pu la faire fonctionner en utilisant un définissant un action listener. Le code pour la bean utilisée en guise d'action listener m'a été fourni sur ce topic Smiley Happy

Merci tout de même pour l'aide apportée Smiley Happy