AnsweredAssumed Answered

Share: notification mail aux groupe 'Site Collaborator'

Question asked by martonni on Feb 19, 2010
Latest reply on Apr 7, 2010 by rguinot
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

Outcomes