Lien de téléchargement plusieurs doc en une seule fois

cancel
Showing results for 
Search instead for 
Did you mean: 
fidele
Member II

Lien de téléchargement plusieurs doc en une seule fois

Bonjour à tous,

Une fois de plus, je me tourne vers vous pour m'aider à trouver une solution à un problème que le voici
Sur la page de résultat d'une recherche avancée , J'aimerais ajouter un lien qui une fois cliqué, permet de telecharger tous les documents resultats de la recherche. c'est à dire qu'au lieu de cliquer sur chacun des documents trouver pour les télécharger, l'utilisateur clique une seule fois sur un lien et hop! le telechargement des tous les documents s'opère.

J'ai envisagé la manière suivante: je vais créer un lien qui point vers un fichier zip (contenant les doc ainsi trouvés) et quand on clique sur ce lien on téléchargé le fichier zip. La création fichier s'effectue en même temps que la page de résultat s'affiche.
Mon problème c'est que dans le code source (BrowserBean.java,browser.jsp, …) je connais pas comment faire pour avoir les docs pour les zipper ( j'avoue que je ne suis pas très à l'aise avec myFaces)

Si quelqu'un pourrais m'indiquer quelques pistes pour implémenter cette idée, ou si vous avez d'autres solutions je suis preneur.

En espérant une aide de votre part.
Merci beaucoup
Fidèle
3 Replies
jayjayecl
Active Member II

Re: Lien de téléchargement plusieurs doc en une seule fois

Bonjour,

La meilleure idée, selon moi, serait d'ajouter une action sous "Actions supplémentaires", dans la page "Résultats de recherche".
Cette nouvelle action, par exemple "Télécharger archive de résultats", serait donc implémentée sous la forme d'un "Dialog", par exemple "GetZipResultsDialog".

Comment créer un dialog avec une action personnalisée ?
voir ici : http://wiki.alfresco.com/wiki/Adding_a_Custom_Dialog
et ici : http://wiki.alfresco.com/wiki/Custom_Actions

Vous définiriez le BrowseBean comme attribut de ce dialog (vous l'injecteriez via le faces-config-custom.xml) :


transient private BrowseBean browseBean;

Dans la méthode d'exécution du dialog, vous auriez besoin de récupérer la liste des résultats de recherche :

List<Node> contentList = browseBean.getContent();

Et feriez ensuite appel aux APIS de votre choix pour créer un zip, et l'envoyer en téléchargement.
fidele
Member II

Re: Lien de téléchargement plusieurs doc en une seule fois

Bonjour,

Je vous remercie Rodel pour la piste que vous avez indiquée. J'ai implémenté votre idée en me basant sur les liens indiqués. Mais je me bloque sur un autre soucis. Je ne trouve pas le moyen d'avoir le fichier propremnt dit  avec l'objet Node de la liste List<Node>.
J'ai essayé dans dans le code d'exécution de mon nouveau bean GetZipResultsDialog le code suivant :

       //litse des nodes resultats de la recherche
       List<Node> contentList = browseBean.getContent();
        Node node = (Node)contentList.get(0);
        System.out.println("************** node.getPath() " + node.getPath());
        System.out.println("************** node.getName() " + node.getName());
         System.out.println("************** url " + node.getProperties().get("url"));
         System.out.println("************** downloadUrl " + node.getProperties().get("downloadUrl"));
         System.out.println("************** path " + node.getProperties().get("path"));
         System.out.println("************** displayPath " + node.getProperties().get("displayPath"));

J'ai fait ça pour tester quelle propriété du node j'ai besion pour avoir le document proprement-dit avant de le zipper mais j'ai regardé le resultat mais aucune ne me donne le fichier.
J'ai testé aussi les autres attributs de l'objet Node mais ça ne marche pas non plus.
Alors si Rodel ou quelqu'un d'autre me dire par quel chemin je dois emprunter pour avoir le fichier à zipper via ces propriétés de l'objet node, ça m'aidera beaucoup

Merci beaucoup
Fidèle
jayjayecl
Active Member II

Re: Lien de téléchargement plusieurs doc en une seule fois

Avec le ContentService :

ContentService cs ;

        FileContentReader fContentReader = (FileContentReader) cs.getReader(
                nodeRef, ContentModel.PROP_CONTENT);

        return fContentReader.getFile();

Bonne chance