Envoyer un mail aux groupes rattachés à un doc.

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

Envoyer un mail aux groupes rattachés à un doc.

Bonjour,

Voici ma démarche :

je suis reparti d'un script existant pour envoyer un mail à un groupe d'utilisateur (test) lorsqu'un document est copié dans un espace.
le code fonctionne bien, mais maintenant, je voudrais passer à l' étape suivante qui est d'envoyer ce mail aux groupes affectés au document en question.
Exemple : document.doc à 2 groupes invités en lecture , compta (user1, user2) et rh (user3 et user4).
Comment modifier le script pour remplacer dynamiquement test par compta et rh et envoyer le mail à user1,2,3,4


try{
   if(!document.isContainer){
var group = people.getGroup("GROUP_" +"test");
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 " + document.parent.name + ".";
   mail.parameters.from = "admin@alfresco.fr";
   mail.parameters.template = companyhome.childByNamePath("Data Dictionary/Email Templates/notification_user_email.ftl");
   mail.parameters.text = "Nouveau document"; //"some text, in case template is not found";

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

Merci de votre aide

Cordialement
Fred.
3 Replies
bertrandf
Active Member

Re: Envoyer un mail aux groupes rattachés à un doc.

Il faut que vous utilisiez l'API JavaScript, et plus particulièrement l'API Permission and Security.

Vous pouvez récupérer les permissions sur un nœud grâce à : getPermissions(), ce qui vous renvoie un tableau de permissions (sous forme de string).
Pour chaque permission vous retrouvez les informations suivantes séparées par des points virgules :
* [ALLOWED|DENIED] : s'il est autorisé ou non
* [USERNAME|GROUPNAME] : le nom de l'utilisateur ou du groupe (préfixé par GROUP_)
* PERMISSION : le type de permission (Consumer, Contributor, …)

Par exemple :
ALLOWED;fred_pack;Consumer
ALLOWED;GROUP_compta;Consumer
ALLOWED;GROUP_rh;Consumer

Voici un exemple d'utilisation :

var persons = [];

var perms = document.getPermissions();
for(var i=0 ; i<perms.length ; i++) {
  var perm = perms[i].split(";");
   
  if(perm[0] == "ALLOWED" && perm[1].lastIndexOf("GROUP_") != -1) {
    var group = people.getGroup(perm[1]);
   
    if(group)
      persons.concat(persons, people.getMembers(group)); //Ne traite pas les doublons
  }
}

A noter que dans cet exemple, les doublons "utilisateur" ne sont pas gérés (si un utilisateur est dans plusieurs groupes ou s'il y a plusieurs permissions pour un même groupe alors des utilisateurs peuvent être présent plusieurs fois dans le tableau persons).
fred_pack
Member II

Re: Envoyer un mail aux groupes rattachés à un doc.

Bonjour,

Juste un mot : MERCI !!  Smiley Very Happy

ca marche 'nickel' (ci-dessous le code)


var persons = [];
var perms = document.getPermissions();
for(var i=0 ; i<perms.length ; i++) {
   var perm = perms[i].split(";");
   if(perm[0] == "ALLOWED" && perm[1].lastIndexOf("GROUP_") != -1) {
      var group = people.getGroup(perm[1]);
         if(group)
            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);
            }
         }
     }
}

function sendMail(email){
   // Envoi mail
   var mail = actions.create("mail");
   mail.parameters.to = email;
   mail.parameters.subject = "Document Mis a Jour";
   mail.parameters.from = "admin@alfresco.fr";
   mail.parameters.template = companyhome.childByNamePath("Data Dictionary/Email Templates/diffusion_document.ftl");
   mail.parameters.text = "Nouveau document";
   mail.execute(document);
}

Je post aussi le Email Template (si cela intéresse qqun)


Bonjour,

Le document '${document.name}' est disponible en consultation dans l'espace '${space.name}'

Vous pouvez retrouver directement ce document en suivant ce lien :
<#assign ref=space.nodeRef>
<#assign workspace=ref[0..ref?index_of("://")-1]>
<#assign storenode=ref[ref?index_of("://")+3..]>
http://IP_DU_SERVEUR:8080/alfresco/navigate/browse/${workspace}

Cordialement

${person.properties.firstName}<#if person.properties.lastName?exists> ${person.properties.lastName}</#if>


Cordialement
Fred
fred_pack
Member II

Re: Envoyer un mail aux groupes rattachés à un doc.

Je reviens sur le sujet pour rajouter le code du départ, mais en rajoutant la suppression des doublons
si ca intéresse quelqu'un…

// Récupération de l'identifiant du document passé en parametre
// Envoi d'un mail de notification aux utilisateurs des groupes rattachés au document
// avec suppression des doublons 
var nodeRef = args["noderef"];
var document = search.findNode(nodeRef);

var persons = [];
var users = new Array();
var perms = document.getPermissions();
for(var i=0 ; i<perms.length ; i++) {
   var perm = perms[i].split(";");
   if(perm[0] == "ALLOWED" && perm[1].lastIndexOf("GROUP_") != -1) {
      var group = people.getGroup(perm[1]);
         if(group){
            var persons = people.getMembers(group);
            for each (person in persons){
            if(person.properties.userName != "admin" && person.properties.userName != "guest"){
               var email = person.properties.email;
                     // Insertion dans la table users (suppression des doublons)
                      if(email) {
                       var exist = 0;
                         for(var seq=0 ; seq<users.length ; seq++) {
                             if (users[seq] == email) {
                                  exist = 1;
                             }
                         }
                         if (exist == 0){
                            users[users.length] = email;     
                        }
                    }
               }
            }
         }
     }
}
// Envoi mail aux utilisateurs
for (var i=0 ; i<users.length ; i++) {
   sendMail(users[i]);
}

// Message de confirmation d'envoi pour l'expéditeur
   var email = person.properties.email;
   var mail = actions.create("mail");
   mail.parameters.to = email;
   mail.parameters.subject = "Document "+document.name;
   mail.parameters.from = "Info@Alfresco";
   mail.parameters.text = "La notification aux utilisateurs a été effectuée";
   mail.execute(document);

// Retour à la page d'origine aprés exécution du script
var goBack = "<script>history.back();</script>";
goBack;


function sendMail(email){
   // Envoi mail
   var mail = actions.create("mail");
   mail.parameters.to = email;
   mail.parameters.subject = "Document Mis a Jour";
   mail.parameters.from = "Info@Alfresco";
   mail.parameters.template = companyhome.childByNamePath("Data Dictionary/Email Templates/diffusion_document.ftl");
   mail.parameters.text = "Nouveau document";
   mail.execute(document);
}