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