cancel
Showing results for 
Search instead for 
Did you mean: 

Share: notification mail aux groupe 'Site Collaborator'

martonni
Champ in-the-making
Champ in-the-making
Bonjour,

Je m'intéresse ici à Alfresco SHARE.
Je souhaiterai générer un mail de notification aux membres d'un espace (groupe "SiteCollaborator"). Ce mail doit être envoyé lorsqu'un document est ajouté à l'espace (dossier "Document Librairy", peut-importe le sous-répertoire).
Pour cela je me suis en grande partie inspiré de ce post : http://forums.alfresco.com/fr/viewtopic.php?f=8&t=3719&p=16781&hilit=mail#p16781. Le principe est classique :
- Une règle qui déclenche un script dès qu'un document est créé (et au passage qui filtre les "doclib.png" et "webpreview.swf"),
- Un script qui récupère envoi un mail aux membres du groupe (ici "GROUP_site_Sitetest2_SiteCollaborator"),
- Un template qui met en forme le mail dynamiquement et affiche notamment le nom de l'auteur du document, l'espace en question, un lien vers la page du document.

Voici le Script :
try{
if(!document.isContainer){

var dossier1=space.parent.parent.properties.name
var dossier2=space.parent.parent.parent.properties.name
var dossier3=space.parent.parent.parent.parent.properties.name

if(dossier1== "Sites")
   var dossier=space.parent.properties.name;

if(dossier2== "Sites")
   var dossier=dossier1;

if(dossier3== "Sites")
   var dossier=dossier2;

var group = people.getGroup("GROUP_site_"+dossier+"_SiteCollaborator");
var persons = people.getMembers(group);

       for each (person in persons){
           if(person.properties.userName != "admin" && person.properties.userName != "guest"){
               var email = person.properties.email;

               if(email)
                   sendMail(email);
           }
       }
   }
}

catch(exception){
   throw exception;
}

function sendMail(email){
   // create mail action
   var mail = actions.create("mail");
   mail.parameters.to = email;
   mail.parameters.subject = "Nouveau document dans l'espace " + dossier + ".";
   mail.parameters.from = "admin@alfresco.fr";
   mail.parameters.template = companyhome.childByNamePath("Data Dictionary/Email Templates/Email_notification_doc_espaces.ftl");
   mail.parameters.text =Erreur template ; //"some text, in case template is not found" ;

   // execute action against a document
   mail.execute(document);
}


et voici le Template :


<#assign dossier1=space.parent.parent.name>
<#assign dossier2=space.parent.parent.parent.name>
<#assign dossier3=space.parent.parent.parent.parent.name>

<#if dossier1== "Sites">
<#assign dossier=space.parent.name>
<#elseif dossier2== "Sites">
<#assign dossier=dossier1>
<#elseif dossier3== "Sites">
<#assign dossier=dossier2>
</#if>
Bonjour,

Un nouveau document nommé "${document.name}" a été ajouté par ${person.properties.firstName} <#if person.properties.lastName?exists> ${person.properties.lastName}</#if> dans le dossier  "${dossier}".

Cliquer ici pour accéder à ce document : http://serveur/share/page/site/${dossier}/document-details?nodeRef=${document.nodeRef}
Cliquer ici pour accéder à la GED : http://serveur/share

J'ai 2 questions :
- Dans le script:  Comment peut-on récupérer le nom du dossier de l'espace (ici "sitetest2") dans lequel le le document a été déposé(sans passer par une succession limitée de if et de ".parent" ?
- Est-il possible de passer des paramètres au Template pour les réutiliser en variables (ex: nom du dossier, url d'accès à la page…).

Quelqu'un a déjà été confronté à ce problème? Avez-vous des pistes???
Merci d'avance.

Martin
4 REPLIES 4

martonni
Champ in-the-making
Champ in-the-making
Bonjour,

J'ai résolu une partie du problème en ne faisant pas appel au script. Je procède de la manière suivante :
- Une règle qui envoi un mail au groupe "GROUP_Site_Sitetest2_SiteCollaborator"…,
- …en utilisant le template (posté précédemment).

La question ne porte plus que la partie template : existe t-il une autre méthode pour aller rechercher le nom du dossier (plutôt qu'une succession de "if" et de ".parent"?

Merci à vous pour votre aide

damar
Champ in-the-making
Champ in-the-making
Bonjour,
Il doit avoir moyen de faire une boucle mais je ne m'y connais pas encore suffisamment dans ce domaine.
Mais ça m'intéresserais de savoir comment faire.
Merci.

martonni
Champ in-the-making
Champ in-the-making
Bonjour à tous,

Je reste toujours sur cette problématique (qui concerne le code template). Quelqu'un connait-il le moyen d'implémenter une boucle dans un template mail, ce qui me permettrait de me passer de cette série de "if"?

Merci à vous,

rguinot
Confirmed Champ
Confirmed Champ