11-15-2007 09:25 AM
// notify_users.js (version new)
// cree par Aurelien Chivot le 05/10/2007 pour OVERZIS
//
// script de notification. pour customiser le message, voir dans la fonction send_msg ci-dessous
// ce script envoie un mail a tous les ayants droits d'un document, sauf celui qui a declenche l'alerte
// note : la recherche de permissions fonctionne avec les permissions heritees
// mais pas avec les groupes, pour cela il faut modifier la fonction notify_users
function send_msg(emailto) {
var mailfrom = "XXXX@XXXX.XXX";
var serverurl = "http://XXX.XXX.XXX.XXX:8080/alfresco";
var parentname = document.parent.properties.name;
var docname = document.properties.name;
var doctype = "" + document.type;
doctype = doctype.split("}")[1];
var mailsubject = "";
var mailtext = "";
var usrname = person.properties.firstName;
if (person.properties.lastName)
{
usrname += " " + person.properties.lastName;
}
switch (doctype) {
case "content":
mailsubject = "[Alfresco] Nouveau fichier dans " + parentname + " : " + docname;
mailtext = "Le nouveau fichier " + docname + " a ete ajoute dans " + document.displayPath + " par " + usrname;
mailtext += "\n\nLe fichier est accessible en cliquant ou copiant le lien ci-dessous :\n" + serverurl + document.url;
mailtext += "\n\nVisualiser l'espace contenant en cliquant ou copiant le lien ci-dessous :\n" + serverurl + document.parent.url;
break;
case "folder":
mailsubject = "[Alfresco] Nouvel espace dans " + parentname + " : " + docname;
mailtext = "Le nouvel espace " + docname + " a ete ajoute dans " + document.displayPath + " par " + usrname;
mailtext += "\n\nL'espace est accessible en cliquant ou copiant le lien ci-dessous :\n" + serverurl + document.url;
break;
case "topic":
mailsubject = "[Alfresco] Nouvelle discussion dans " + parentname;
mailtext = "La nouvelle discussion a ete commence dans " + document.displayPath + " par " + usrname;
mailtext += "\n\nLa discussion est accessible en cliquant ou copiant le lien ci-dessous :\n" + serverurl + document.url;
break;
case "post":
mailsubject = "[Alfresco] Nouveau message dans la discussion " + parentname;
mailtext = "Le nouveau message a ete ajoute dans la discussion " + document.displayPath + " par " + usrname;
mailtext += "\n\nVoir ce message en cliquant ou copiant le lien ci-dessous :\n" + serverurl + document.url;
mailtext += "\n\nLe fil de discussion est accessible en cliquant ou copiant le lien ci-dessous :\n" + serverurl + document.parent.url;
break;
}
if (mailsubject != "")
{
var mail = actions.create("mail");
mail.parameters.to = emailto;
mail.parameters.from = mailfrom;
mail.parameters.subject = mailsubject;
mail.parameters.text = "Mail de notification automatique.\n\n";
mail.parameters.text += mailtext;
return mail.execute(document);
}
return true;
}
function notify_users(node) {
var permissions = node.permissions;
for each (perm in permissions)
{
var txtusr = perm.split(";")[1];
var usr = people.getPerson(txtusr);
if (usr && (usr.properties.email != person.properties.email))
{
send_msg(usr.properties.email);
}
}
if (node.inheritsPermissions())
{
return notify_users(node.parent);
}
return true;
}
notify_users(document);
11-23-2007 10:43 AM
11-23-2007 03:07 PM
12-14-2007 05:55 AM
02-15-2008 10:38 AM
function getNodeAddresses(node, addressText) {
for each (permission in node.permissions) {
var valuesList = permission.split(";");
if (valuesList[0].toUpperCase().indexOf("ALLOWED") >= 0) {
var authNode = people.getPerson(valuesList[1]);
if ((authNode != null) && (authNode.properties.email != person.properties.email) && (addressText.indexOf(authNode.properties.email) < 0)) {
addressText += (addressText.length == 0 ? "" : ";") + authNode.properties.email;
}
authNode = people.getGroup(valuesList[1]);
if (authNode != null) {
for each (member in people.getMembers(authNode, true)) {
if ((member.properties.email != person.properties.email) && (addressText.indexOf(member.properties.email) < 0)) {
addressText += (addressText.length == 0 ? "" : ";") + member.properties.email;
}
}
}
}
}
if (node.inheritsPermissions()) {
return getNodeAddresses(node.parent, addressText);
} else {
return addressText.split(";");
}
}
function notify_users(node) {
var emailAddresses = getNodeAddresses(node, "");
for each (address in emailAddresses) {
send_msg(address);
}
}
02-25-2008 07:31 AM
02-25-2008 08:23 AM
It would be good if you can add this example to the JavaScript examples wiki page:
http://wiki.alfresco.com/wiki/JavaScript_API_Cookbook
If you'd prefer i do it that's fine.
Kevin
03-04-2008 05:10 AM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.