431 lines
16 KiB
Plaintext
431 lines
16 KiB
Plaintext
<%@language = "javascript"%>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: shared/queuemail.asp
|
|
Description: Zet een e-mail notifatie in de queue. Die wordt later verstuurd
|
|
door PutNotification.exe
|
|
Parameters: defemail_key met key van de user waar de mail naar toe moet
|
|
defemail (rechtstreeks het e-mail adres)
|
|
Context:
|
|
Note:
|
|
|
|
|
|
*/ %>
|
|
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/iface.inc" -->
|
|
<!-- #include file="../Shared/selector.inc" -->
|
|
<!-- #include file="../Shared/persoonselector.inc" -->
|
|
<!-- #include file="../Shared/bedrijfselector.inc" -->
|
|
<!-- #include file="../Shared/kenmerk_common.inc" -->
|
|
<!-- #include file="../Shared/FlexFiles.inc" -->
|
|
|
|
<%
|
|
protectQS.verify(); // tamper check
|
|
FCLTHeader.Requires({ plugins:["jQuery"],
|
|
js: []
|
|
});
|
|
|
|
var defaultemail = getQParam("defemail","");
|
|
var defemail_type = getQParam("defemail_type", "P");
|
|
var defemail_key = getQParamInt("defemail_key", -1);
|
|
|
|
var pcode = getQParam("pcode", "");
|
|
var pkey = getQParamInt("key", -1);
|
|
var xkey = getQParamInt("xkey", -1);
|
|
var subject = getQParam("subject", "");
|
|
var pshowcompany = getQParamInt("pshowcompany", 0) == 1;
|
|
var submitting = getQParamInt("submitting", 0) == 1;
|
|
var emails = getQParam("emails", "");
|
|
var pmodule = getQParam("pmodule", "");
|
|
var pniveau = getQParam("pniveau", "");
|
|
|
|
// Ben ik voor deze module FO, en mag ik dus attachments selecteren?
|
|
var xfunc = user.func_enabled("*", null, null, user_key);
|
|
var iamfo = false;
|
|
var iambo = false;
|
|
switch (pmodule)
|
|
{
|
|
case "RES": iamfo = xfunc.canWrite("WEB_RESFOF"); break;
|
|
case "MLD": iamfo = xfunc.canWrite("WEB_MLDFOF"); iambo = xfunc.canWrite("WEB_MLDBOF"); break;
|
|
case "BES": iamfo = xfunc.canWrite("WEB_BESFOF"); break;
|
|
case "PRS": iamfo = xfunc.canWrite("WEB_PRSSYS"); break;
|
|
}
|
|
|
|
function bestandenlijst(pmodule, pniveau, pkey)
|
|
{
|
|
var bestandlijst = [];
|
|
if (pmodule && pniveau)
|
|
{
|
|
var vSubfolder = pmodule + "/" + subfolderKey(pniveau, pkey);
|
|
var vAttachPath = S("flexFilesPath")+ "/" + vSubfolder;
|
|
|
|
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
|
if (fso.FolderExists(vAttachPath))
|
|
{
|
|
var f1 = fso.GetFolder(vAttachPath);
|
|
var vmap = new Enumerator(f1.subFolders);
|
|
for (; !vmap.atEnd(); vmap.moveNext())
|
|
{
|
|
var f2 = fso.GetFolder(vAttachPath + "/" + vmap.item().Name);
|
|
var vfile = new Enumerator(f2.files);
|
|
for (; !vfile.atEnd(); vfile.moveNext())
|
|
{
|
|
bestandlijst.push( { folder: vSubfolder,
|
|
file: { kenmerkkey: vmap.item().Name,
|
|
bestandnaam: vfile.item().Name
|
|
}
|
|
}
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return bestandlijst;
|
|
}
|
|
|
|
// Bij MLD worden ook de bestanden van de 'parents' aangeboden
|
|
function bestandenlijstALL(pmodule, pniveau, pkey)
|
|
{
|
|
var bestandlijst = bestandenlijst(pmodule, pniveau, pkey);
|
|
if (pmodule == "MLD")
|
|
{
|
|
var sk = pkey;
|
|
var mk = pkey;
|
|
while (true)
|
|
{
|
|
var sql = "SELECT mld_melding_start_key"
|
|
+ " FROM mld_melding"
|
|
+ " WHERE mld_melding_key = " + mk;
|
|
var oRs = Oracle.Execute(sql);
|
|
var sk = oRs("mld_melding_start_key").Value;
|
|
if (!sk || sk == mk)
|
|
break; // klaar
|
|
bestandlijst = bestandlijst.concat(bestandenlijst(pmodule, pniveau, sk));
|
|
mk = sk;
|
|
}
|
|
}
|
|
return bestandlijst
|
|
}
|
|
|
|
function tracksentemail(key, srttracking, emails, mailfrom, subject, prs_perslid_key, xkey, att_list)
|
|
{
|
|
// This function is our gate to the mail (and probably other media) queue for ad hoc sending needs by the user
|
|
// To be invoked e.g. when a user wants to e-mail a reservation form ("bon") to requestor or other address
|
|
function queuemail(pcode, pref, pmessage, pemail, pmailfrom, xkey)
|
|
{
|
|
// pcode hoort te zijn een van BESMAI, BES2MA, BEZMAI, MLDMAI, ORDMAI, RESMAI, RES2MA
|
|
// en is noodzakelijk om in de queue nog het type te kunnen bepalen.
|
|
// PutOrders moet er nl. een bon van kunnen maken. De status/mode aldaar is dummy.
|
|
// En: De laatste parameter is voor RESMAI/alleen een deelreservering.
|
|
if (pemail == null) return false;
|
|
|
|
if (pmailfrom == "")
|
|
{ // Geen namens mail adres meegekregen. Dan mailadres van user invullen
|
|
// notify approver and requestor by message & mail as configured in fac_srtnotificatie with BESAPx
|
|
pmailfrom = user.prs_perslid_email();
|
|
}
|
|
|
|
var attachments = att_list.join("|"); // lijst met attachments als string naar putnotificationsrtprio.
|
|
|
|
Oracle.Execute("BEGIN fac.putnotificationsrtprio("
|
|
+ user_key
|
|
+ ", NULL " // pto
|
|
+ ", " + safe.quoted_sql(pcode)
|
|
+ ", " + pref
|
|
+ ", " + safe.quoted_sql(pmessage)
|
|
+ ", 2" // pstatus
|
|
+ ", " + safe.quoted_sql(pemail)
|
|
+ ", NULL" // pmobile
|
|
+ ", " + xkey
|
|
+ ", 2"
|
|
+ ", " + safe.quoted_sql(pmailfrom)
|
|
+ ", " + safe.quoted_sql(attachments)
|
|
+ "); END;");
|
|
putorders.sendnotifications(pref, pcode);
|
|
|
|
return true;
|
|
}
|
|
|
|
// emails splitten
|
|
var emailArr = ('' + emails).split(';');
|
|
for (i = 0; i < emailArr.length; i++)
|
|
{
|
|
queuemail (srttracking, key, subject, emailArr[i], mailfrom, xkey);
|
|
}
|
|
|
|
// srttracking hoort te zijn een van BESMAI, BES2MA, BEZMAI, MLDMAI, ORDMAI, RESMAI, RES2MA
|
|
if (typeof prs_perslid_key == 'undefined')
|
|
prs_perslid_key = user_key;
|
|
|
|
var mail_str = "";
|
|
// PF: ik vind specifieke tekst niet nodig. Dit is nu dus gewoon documentatie ;-)
|
|
switch (srttracking)
|
|
{
|
|
case "MLDMAI" :
|
|
case "ORDMAI" :
|
|
case "BESMAI" :
|
|
case "BES2MA" :
|
|
case "BEZMAI" :
|
|
case "CNTMAI" :
|
|
case "FINMAI" :
|
|
case "INSMAI" :
|
|
case "MESMAI" :
|
|
case "PRJMAI" :
|
|
case "PRSMAI" :
|
|
case "RAPMAI" :
|
|
case "RESMAI" : mail_str = L("lcl_hasbeenmailed_to") + emails;
|
|
break;
|
|
}
|
|
if (subject != orgsubject)
|
|
mail_str += "\n" + L("lcl_noti_sendsubject") + " " + subject;
|
|
|
|
// Voor RESMAI moet res_rsv_ruimte_key meegegeven worden van de deelreservering.
|
|
// Tracken van het mailen van een gehele reservering heeft geen zin.
|
|
if (srttracking != "RES2MA")
|
|
shared.trackaction(srttracking, (srttracking == "RESMAI"? xkey : key), mail_str);
|
|
}; //tracksentemail()
|
|
|
|
if (submitting)
|
|
{
|
|
var subject = getFParam("subject", "");
|
|
var orgsubject = getFParam("orgsubject", "");
|
|
var mailfrom = getFParam("namens", "");
|
|
var emails = getFParam("emails", "");
|
|
var maillist = "\n" + emails.replace(/\;/g, "\n");
|
|
|
|
// Welke bestanden zijn geselecteerd.
|
|
var checklist = bestandenlijstALL(pmodule, pniveau, pkey);
|
|
var file_list = [];
|
|
if (checklist.length > 0)
|
|
{
|
|
for (att = 0; att < checklist.length; att++)
|
|
{
|
|
if (getFParam("kmnr" + att, "off") == "on")
|
|
{
|
|
file_list.push( checklist[att].folder + "/" + checklist[att].file.kenmerkkey + "/" + checklist[att].file.bestandnaam );
|
|
}
|
|
}
|
|
}
|
|
|
|
FCLTHeader.Generate();
|
|
// track het senden van de mail
|
|
tracksentemail(pkey, pcode, emails, mailfrom, subject, user_key, (xkey > 0? xkey : null), file_list);
|
|
%>
|
|
|
|
<script>
|
|
FcltMgr.closeDetail(window, { emails: "<%=safe.jsstring(maillist)%>",
|
|
key: "<%=pkey%>" });
|
|
</script>
|
|
<%
|
|
}
|
|
else
|
|
{
|
|
var mailfrom = getQParamInt("mailfrom", 0) == 1; %>
|
|
<html>
|
|
<head>
|
|
<% // Bepaal default email
|
|
if (defemail_key > 0)
|
|
{
|
|
if (defemail_type == "C")
|
|
{
|
|
var sql = " SELECT replace(c.prs_contactpersoon_email, ' ', '') AS email"
|
|
+ " FROM prs_contactpersoon c"
|
|
+ " WHERE c.prs_contactpersoon_key = " + defemail_key;
|
|
}
|
|
else if (defemail_type == "B")
|
|
{
|
|
var sql = " SELECT replace(b.prs_bedrijf_email, ' ', '') AS email"
|
|
+ " FROM prs_bedrijf b"
|
|
+ " WHERE b.prs_bedrijf_key = " + defemail_key;
|
|
}
|
|
else if (defemail_type == "P")
|
|
{
|
|
var sql = " SELECT replace(p.prs_perslid_email, ' ', '') AS email"
|
|
+ " FROM prs_perslid p"
|
|
+ " WHERE p.prs_perslid_key = " + defemail_key;
|
|
}
|
|
oRs = Oracle.Execute(sql);
|
|
defaultemail = oRs("email").Value;
|
|
oRs.Close();
|
|
}
|
|
|
|
FCLTHeader.Generate();
|
|
%>
|
|
<script type='text/javascript'>
|
|
jQuery(function()
|
|
{
|
|
FcltMgr.fixActiveelementError();
|
|
$("#emails").focus();
|
|
});
|
|
|
|
<% if (pshowcompany)
|
|
{ %>
|
|
function onChangeComp()
|
|
{
|
|
// Vul email van bedrijf in
|
|
$("#emails").val($("#emailbedrijf").val());
|
|
|
|
// Wis Persoon
|
|
sgPerson.setValue(-1, "");
|
|
}
|
|
<% } %>
|
|
|
|
function onChangePerson()
|
|
{
|
|
// Vul email van persoon in
|
|
if ($("#emailpersoon").val())
|
|
{
|
|
var current_val = ($("#emails").val() != "" ? $("#emails").val() + "; " : "");
|
|
$("#emails").val(current_val + $("#emailpersoon").val());
|
|
$("#sName_key_show").val("");
|
|
$("textarea").autogrow();
|
|
}
|
|
|
|
<% if (pshowcompany)
|
|
{ %>
|
|
|
|
// Wis Bedrijf
|
|
sgComp.setValue(-1, "");
|
|
<% } %>
|
|
}
|
|
|
|
function queueSubmit()
|
|
{
|
|
// Standaard checks op verplichte velden, datum formaat, numeriek en float formaat, currency formaat.
|
|
if (!validateForm("u2"))
|
|
return false;
|
|
|
|
if (!new RegExp("<%=safe.jsstring(S("email_regexp"))%>", "ig").test($("#emails").val()))
|
|
alert(L("lcl_invalid_email"))
|
|
else
|
|
document.getElementById("u2").submit();
|
|
}
|
|
|
|
function queueCancel()
|
|
{
|
|
FcltMgr.closeDetail(window, { cancel: true, key: "<%=pkey%>" } );
|
|
}
|
|
|
|
function chooseEmailCallbackRefresh(data)
|
|
{
|
|
alert(data.email);
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
|
|
<body class="modal" id="mod_queuemail">
|
|
<div id="email">
|
|
<%
|
|
url = "queuemail.asp?submit=1&pcode="+pcode+"&key="+pkey+"&xkey="+xkey+"&submitting=1"+"&pmodule="+pmodule+"&pniveau="+pniveau;
|
|
%>
|
|
<form name="u2" id="u2" method="post" action="<%=protectQS.create(url)%>">
|
|
<input type="hidden" name="orgsubject" value="<%=safe.htmlattr(subject)%>">
|
|
<%
|
|
BLOCK_START("emailInput", subject);
|
|
|
|
if (mailfrom && S("replyaddress"))
|
|
{
|
|
// <!-- Namens -->
|
|
var sql = "SELECT prs_perslid_email"
|
|
+ " , prs_perslid_email"
|
|
+ " , 1"
|
|
+ " FROM prs_perslid"
|
|
+ " WHERE prs_perslid_key = " + user_key
|
|
+ " AND prs_perslid_email IS NOT NULL"
|
|
+ " UNION "
|
|
+ "SELECT " + safe.quoted_sql(S("replyaddress"))
|
|
+ " , " + safe.quoted_sql(S("replyaddress"))
|
|
+ " , 2"
|
|
+ " FROM DUAL"
|
|
+ " ORDER BY 3"
|
|
FCLTselector("namens",
|
|
sql,
|
|
{ label: L("lcl_noti_email_namens") }
|
|
);
|
|
}
|
|
|
|
// <!-- Naam -->
|
|
if (S("show_perslidselector_by_mail"))
|
|
{
|
|
FCLTpersoonselector("sName_key",
|
|
"sgPerson",
|
|
{ perslidKey: -1,
|
|
label: L("lcl_name"),
|
|
onChange: "onChangePerson",
|
|
trclass: "more",
|
|
filtercode: "MAIL",
|
|
extracode: "E",
|
|
extraParamField: "emailpersoon",
|
|
whenEmpty: L("lcl_search_generic") // want filter
|
|
});
|
|
}
|
|
// <!-- Bedrijf -->
|
|
if (pshowcompany)
|
|
{
|
|
FCLTbedrijfselector("sComp_key",
|
|
"sgComp",
|
|
{ companyKey: -1,
|
|
label: L("lcl_company"),
|
|
onChange: "onChangeComp",
|
|
extracode: "E",
|
|
trclass: "more",
|
|
extraParamField: "emailbedrijf",
|
|
whenEmpty: L("lcl_search_generic")
|
|
});
|
|
|
|
}
|
|
RWTEXTAREATR("emails",
|
|
"fldmaillist required",
|
|
L("lcl_noti_sendto"),
|
|
safe.htmlattr(defaultemail),
|
|
{html: "rows='2' cols='60'"} // kan hier nog iets een nieuwe regel forceren?
|
|
);
|
|
|
|
%>
|
|
|
|
<tr>
|
|
<td class="label"><label for="subject"><%=L("lcl_noti_sendsubject")%></label></td>
|
|
<td>
|
|
<input class="fldsubject" type="text" id="subject" name="subject" value="<%=safe.htmlattr(subject)%>">
|
|
</td>
|
|
</tr>
|
|
|
|
<tr><td><br/></td></tr>
|
|
<%
|
|
// Bijlagen meesturen.
|
|
if (iamfo || iambo)
|
|
{
|
|
checklist = bestandenlijstALL(pmodule, pniveau, pkey);
|
|
for (i=0; i<checklist.length; i++)
|
|
{
|
|
var label = (i==0 ? "<label>" + L("lcl_appendixes") + ":</label>" : " ");
|
|
var fid = "kmnr"+i;
|
|
var fnaam = checklist[i].file.bestandnaam;
|
|
%>
|
|
<tr>
|
|
<td><%=label%></td>
|
|
<td>
|
|
<% CHECKBOX("fldafr", fid, false) %>
|
|
<label for="<%=fid%>"><%=safe.html(fnaam)%></label>
|
|
</td>
|
|
</tr>
|
|
<%
|
|
}
|
|
}
|
|
BLOCK_END();
|
|
var buttons = [ {title: L("lcl_noti_send"), icon: "email.png", action: "queueSubmit()" },
|
|
{title: L("lcl_cancel"), icon: "undo.png", action: "queueCancel()" }];
|
|
CreateButtons(buttons);
|
|
IFACE.FORM_END();
|
|
%>
|
|
</form>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
<%
|
|
}
|
|
%> |