Merge 2023.3 Gold B changes
svn path=/Website/trunk/; revision=63306
This commit is contained in:
@@ -60,7 +60,11 @@ function _updateIncomingOutlookQueue(etag, CRUD) { // etag = 'The HTTP entity ta
|
||||
}
|
||||
incomingOutlookQueue[etag] = new Date().getTime() + 4 * 60 * 60 * 1000; // Expired in 4 uur
|
||||
} else if (CRUD == "D") {
|
||||
delete incomingOutlookQueue[etag];
|
||||
// delete incomingOutlookQueue[etag];
|
||||
// ipv deleten laten we deze expiren over 3s zodat we reeds verwerkte notificaties niet nog eens gaan verwerken als het HTTP verkeer elkaar kruist
|
||||
if (etag in incomingOutlookQueue) {
|
||||
incomingOutlookQueue[etag] = new Date().getTime() + 3 * 1000;
|
||||
}
|
||||
}
|
||||
Application(customerId + "_incomingOutlookQueue") = JSON.stringify(incomingOutlookQueue);
|
||||
Application.UnLock();
|
||||
|
||||
@@ -148,7 +148,10 @@ function model_visitors()
|
||||
{
|
||||
if (jsondata.parking)
|
||||
{
|
||||
var gebouwterreinkey = "NULL"; // doen we nog even niet aan?
|
||||
var gebouwterreinkey = "NULL"; // We ondersteunen nog geen expliciete gebouwkeuze
|
||||
var prkgebter = bez.onlyGebouw(olddata.appointment.id);
|
||||
var gebouwterreinkey = prkgebter > 0? prkgebter: "null"; // de enige goede
|
||||
|
||||
var sql = "BEGIN bez.claim_parking(" + the_key + ", " + gebouwterreinkey + "); END;"
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
@@ -159,7 +162,7 @@ function model_visitors()
|
||||
var bezoeker = "";
|
||||
if ("in" in jsondata)
|
||||
{
|
||||
oRs = Oracle.Execute("SELECT bez_bezoekers_done, bez_afspraak_naam"
|
||||
var oRs = Oracle.Execute("SELECT bez_bezoekers_done, bez_afspraak_naam"
|
||||
+ " FROM bez_bezoekers"
|
||||
+ " WHERE bez_bezoekers_key = " + the_key);
|
||||
olddone = oRs("bez_bezoekers_done").Value;
|
||||
@@ -189,7 +192,10 @@ function model_visitors()
|
||||
var result = generic_REST_POST(this)(params, jsondata, parent_key); /* new visitors */
|
||||
if (jsondata.parking)
|
||||
{
|
||||
var gebouwterreinkey = "NULL"; // doen we nog even niet aan?
|
||||
var gebouwterreinkey = "NULL"; // We ondersteunen nog geen expliciete gebouwkeuze
|
||||
var prkgebter = bez.onlyGebouw(parent_key); // parent_key is de afspraak_key
|
||||
var gebouwterreinkey = prkgebter > 0? prkgebter: "null"; // de enige goede
|
||||
|
||||
var sql = "BEGIN bez.claim_parking(" + result.key + ", " + gebouwterreinkey + "); END;"
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
|
||||
@@ -899,7 +899,37 @@ bez =
|
||||
actie_key = oRs("bez_actie_key").Value;
|
||||
oRs.Close()
|
||||
return actie_key;
|
||||
},
|
||||
|
||||
// Bepaal eventueel het ene gebouw/terrein wat we mogen kiezen. bez.claim_park is nog niet slim genoeg
|
||||
only_prkgebter: -2,
|
||||
onlyGebouw: function _onlyGebouw(afspraak_key)
|
||||
{
|
||||
if (this.only_prkgebter > -2)
|
||||
return this.only_prkgebter;
|
||||
|
||||
var sql = "SELECT bez_afspraak_datum, bez_afspraak_eind, alg_locatie_key"
|
||||
+ " FROM bez_afspraak"
|
||||
+ " WHERE bez_afspraak_key = " + afspraak_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var gebtersql = bez.getgebouwterrein_sql(new Date(oRs("bez_afspraak_datum").value), new Date(oRs("bez_afspraak_eind").value), oRs("alg_locatie_key").value);
|
||||
oRs.Close();
|
||||
var oRs = Oracle.Execute(gebtersql);
|
||||
var aantal_gebter = 0;
|
||||
this.only_prkgebter = -1;
|
||||
while (!oRs.eof)
|
||||
{
|
||||
var alg_type = oRs("alg_type").value;
|
||||
this.only_prkgebter = (alg_type == "R"? oRs("alg_gebouw_key").value : oRs("alg_terreinsector_key").value);
|
||||
aantal_gebter++;
|
||||
oRs.MoveNext();
|
||||
}
|
||||
oRs.Close();
|
||||
if (aantal_gebter != 1)
|
||||
this.only_prkgebter = -1; // Gebruiker heeft gekozen via Suggest en getFParamInt("gebouwkey" + bznum, "") wordt gebruikt.
|
||||
return this.only_prkgebter;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
%>
|
||||
@@ -23,35 +23,6 @@
|
||||
|
||||
<%
|
||||
|
||||
// Bepaal eventueel het ene gebouw/terrein wat we mogen kiezen. bez.claim_park is nog niet slim genoeg
|
||||
var only_prkgebter = -2;
|
||||
function onlyGebouw(afspraak_key)
|
||||
{
|
||||
if (only_prkgebter > -2)
|
||||
return only_prkgebter;
|
||||
|
||||
var sql = "SELECT bez_afspraak_datum, bez_afspraak_eind, alg_locatie_key"
|
||||
+ " FROM bez_afspraak"
|
||||
+ " WHERE bez_afspraak_key = " + afspraak_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var gebtersql = bez.getgebouwterrein_sql(new Date(oRs("bez_afspraak_datum").value), new Date(oRs("bez_afspraak_eind").value), oRs("alg_locatie_key").value);
|
||||
oRs.Close();
|
||||
var oRs = Oracle.Execute(gebtersql);
|
||||
var aantal_gebter = 0;
|
||||
only_prkgebter = -1;
|
||||
while (!oRs.eof)
|
||||
{
|
||||
var alg_type = oRs("alg_type").value;
|
||||
only_prkgebter = (alg_type == "R"? oRs("alg_gebouw_key").value : oRs("alg_terreinsector_key").value);
|
||||
aantal_gebter++;
|
||||
oRs.MoveNext();
|
||||
}
|
||||
oRs.Close();
|
||||
if (aantal_gebter != 1)
|
||||
only_prkgebter = -1; // Gebruiker heeft gekozen via Suggest en getFParamInt("gebouwkey" + bznum, "") wordt gebruikt.
|
||||
return only_prkgebter;
|
||||
}
|
||||
|
||||
// Leest de bezoekers naam, bedrijfnaam, parkeerplaatswens en evt. badgenummer uit Request.Form
|
||||
// Verondersteld dat bez_afspraak_record al bestaat! of maak hem desnoods aan als afspraak_key==-1
|
||||
// (dan zal rsv_ruimte_key een waarde hebben)
|
||||
@@ -482,7 +453,7 @@ function saveOneBezoeker(afspraak_key, rsv_ruimte_key, bznum, params)
|
||||
gebouwterreinkey = prkgebter; // de gekozen
|
||||
else
|
||||
{
|
||||
var prkgebter = onlyGebouw(afspraak_key)
|
||||
var prkgebter = bez.onlyGebouw(afspraak_key)
|
||||
gebouwterreinkey = prkgebter > 0? prkgebter: "null"; // de enige goede
|
||||
}
|
||||
sql = "BEGIN bez.claim_parking(" + bez_key + ", " + gebouwterreinkey + "); END;"
|
||||
|
||||
@@ -489,7 +489,7 @@ if (Session("interface") == "touch") { %>
|
||||
|
||||
<% if (!noTabs && S("menu_tab_toggles_portalmenu")==1)
|
||||
{
|
||||
var menuitems = fillMenuArray(true); // portalOnly
|
||||
var menuitems = fillMenuArray(1, { "portalOnly": true });
|
||||
%>
|
||||
if (selectedTabId == 0) // Zelfservice?
|
||||
{
|
||||
|
||||
@@ -126,7 +126,8 @@ function fac_list_query (params)
|
||||
+ " AND m.fac_activiteit_key IS NULL"
|
||||
+ " AND (m.mld_workflowstep_key IS NULL OR mld_melding_start_key = mld_melding_key)"
|
||||
+ " AND m.mld_melding_datum < SYSDATE + " + S("facilitiesfuture") // niet te toekomstig
|
||||
+ " AND ((m.mld_melding_status IN (1,5,6) AND COALESCE(fac.gettrackingdate('MLDAFM', mld_melding_key),fac.gettrackingdate('MLDREJ', mld_melding_key),mld_melding_einddatum) > SYSDATE - " + S("facilitiespast_mld") + ")" // niet te lang geleden klaar (gepland)
|
||||
+ " AND ((m.mld_melding_status IN (5,6) AND fac.gettrackingdate('MLDAFM', mld_melding_key) > SYSDATE - " + S("facilitiespast_mld") + ")" // niet te lang geleden klaar
|
||||
+ " OR (m.mld_melding_status = 1 AND fac.gettrackingdate('MLDREJ', mld_melding_key) > SYSDATE - " + S("facilitiespast_mld") + ")" // niet te lang geleden verworpen
|
||||
+ " OR m.mld_melding_status NOT IN (1,5,6))" // of ongeacht alles nog niet klaar
|
||||
+ lees_rechten_sql(lpkey, "sm.mld_ins_discipline_key", ["WEB_MLDBOF", "WEB_MLDFOF"])
|
||||
);
|
||||
|
||||
@@ -117,7 +117,9 @@
|
||||
"ins_alg_ruimte_key",
|
||||
"ins_alg_ruimte_type",
|
||||
"ins_alg_ruimte_type_org",
|
||||
"ins_alg_ruimte_key_org"]
|
||||
"ins_alg_ruimte_key_org",
|
||||
"ins_deel_dwgx",
|
||||
"ins_deel_dwgy"]
|
||||
},
|
||||
"mld_melding_note": { "track": null,
|
||||
"fields": ["name", "mld_melding_note_flag"]
|
||||
|
||||
@@ -19,8 +19,6 @@ var NO_OTP_OK = true;
|
||||
<!--#include file="../aut/login.inc"-->
|
||||
<!--#include file="../Shared/encoding.inc" -->
|
||||
<%
|
||||
var isExpired = getQParamInt("expired",0) == 1; // Ben ik hier naar toe gestuurd vanwege een expired wachtwoord?
|
||||
// Dan redirecten we na afloop naar de voorpagina
|
||||
var theUser_key = getQParamInt("prs_key", user_key);
|
||||
if (theUser_key != user_key && !user.has("WEB_FACFAC"))
|
||||
abort_with_warning(L("lcl_no_auth"));
|
||||
@@ -58,17 +56,40 @@ Session("otp_secret_temp") = '1$30$6$0$' + newsecret;
|
||||
|
||||
function otp_accept_callback(data)
|
||||
{
|
||||
iface.button.enable("btn_accept_submit");
|
||||
if (data.success)
|
||||
if (data.success) {
|
||||
FcltMgr.closeDetail(window, data);
|
||||
if (FcltMgr === FcltMgr.topmanager()) {
|
||||
window.top.location.href = "<%=safe.jsstring(rooturl + "/")%>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function otp_cancel() {
|
||||
FcltMgr.confirm("Deze code is nog niet gekoppeld, wilt u dit scherm toch afsluiten?", gen_cancel);
|
||||
}
|
||||
|
||||
$(() => {
|
||||
iface.button.disable("btn_accept_submit");
|
||||
|
||||
$("#otpcode").on("input", event => {
|
||||
if (event.currentTarget.value === "") {
|
||||
iface.button.disable("btn_accept_submit");
|
||||
} else {
|
||||
iface.button.enable("btn_accept_submit");
|
||||
}
|
||||
});
|
||||
$("form[name=u2]").on("submit", event => {
|
||||
event.preventDefault();
|
||||
$("#btn_accept_submit").trigger("click");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="modal" id="mod_authQR">
|
||||
<%
|
||||
MODAL_START();
|
||||
%> <form name="u2"><%
|
||||
MODAL_BLOCK_START("", L("lcl_otp_authenticatie_activate"), {icon: "fa-shield-check"});
|
||||
|
||||
var secret32 = binary_to_base32(hex_to_binary(newsecret));
|
||||
@@ -83,12 +104,13 @@ Session("otp_secret_temp") = '1$30$6$0$' + newsecret;
|
||||
|
||||
MODAL_BLOCK_END();
|
||||
var buttons = [ {title: L("lcl_submit"), icon: "fa-fclt-save", action: "otp_accept()", singlepress: true, id: "btn_accept_submit", importance: 1 },
|
||||
{title: L("lcl_cancel"), icon: "fa-fclt-cancel", action: "gen_cancel()", importance: 3 } ];
|
||||
{title: L("lcl_cancel"), icon: "fa-fclt-cancel", action: "otp_cancel()", importance: 3 } ];
|
||||
SIMPLE_BLOCK_START();
|
||||
CreateButtons(buttons);
|
||||
CreateButtons(buttons, { entersubmit: true });
|
||||
SIMPLE_BLOCK_END();
|
||||
|
||||
IFACE.FORM_END();
|
||||
%> </form><%
|
||||
MODAL_END(); %>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -94,6 +94,7 @@ function SLNKDWF (myProps)
|
||||
// De DLL kent alleen (nog) versie A dus rekenen we B terug naar A
|
||||
// om dat te kunnen omrekenen hebben we DWGminX..DWGmaxY nodig
|
||||
// maar die krijgen we dan gelukkig aangereikt door de aanroeper
|
||||
var paperRot = parseInt(_getParam("rotation",0),10);
|
||||
if (_getParam("maximize","0")=="1" || _getParam("DWGminX","")=="")
|
||||
{
|
||||
var ox = _getParam("offsetX",0);
|
||||
@@ -110,8 +111,6 @@ function SLNKDWF (myProps)
|
||||
var centerX = parseFloat(_getParam("centerX", (DWGminX + DWGmaxX)/2));
|
||||
var centerY = parseFloat(_getParam("centerY", (DWGminY + DWGmaxY)/2));
|
||||
|
||||
var paperRot = parseInt(_getParam("rotation",0),10);
|
||||
|
||||
// Bepaal schaal
|
||||
//
|
||||
var units = Math.max((DWGmaxX - DWGminX) / sizeX, (DWGmaxY - DWGminY) / sizeY) ; // DWG units per pixel bij schaal 1
|
||||
|
||||
@@ -210,7 +210,7 @@ function getCalendarEventByID(userPrincipalName, id)
|
||||
{
|
||||
var request = {
|
||||
"method": "GET",
|
||||
"url": "https://graph.microsoft.com/v1.0/users/" + userPrincipalName + "/events/" + id
|
||||
"url": "https://graph.microsoft.com/v1.0/users/" + encodeURIComponent(userPrincipalName) + "/events/" + id
|
||||
+ "?$expand=singleValueExtendedProperties($filter=id eq '" + FCLT_KEY_PROP_ID_NAME + "')",
|
||||
"headers": { "Authorization": "Bearer " + token }
|
||||
}
|
||||
@@ -221,7 +221,7 @@ function getCalendarEventByID(userPrincipalName, id)
|
||||
function getCalendarEventByICalUId(userPrincipalName, iCalUId, isOccurrence)
|
||||
{ // occurrences (en exceptions) zijn alleen via de calenderView beschikbaar, seriesMaster alleen via events (singleInstance via beiden)
|
||||
var endpoint = isOccurrence ? "calendarView" : "events";
|
||||
var url = "https://graph.microsoft.com/v1.0/users/" + userPrincipalName + "/" + endpoint + "?$filter=iCalUId eq '" + iCalUId + "'"
|
||||
var url = "https://graph.microsoft.com/v1.0/users/" + encodeURIComponent(userPrincipalName) + "/" + endpoint + "?$filter=iCalUId eq '" + iCalUId + "'"
|
||||
+ "&$expand=singleValueExtendedProperties($filter=id eq '" + FCLT_KEY_PROP_ID_NAME + "')";
|
||||
if (isOccurrence) { // Dit endpoint heeft verplichte datum-parameters
|
||||
var calendarDates = getCalendarViewDates(userPrincipalName);
|
||||
@@ -244,7 +244,7 @@ function getCalendarEventByRsv(userPrincipalName, res_rsv_ruimte_key)
|
||||
{
|
||||
var request = {
|
||||
"method": "GET",
|
||||
"url": "https://graph.microsoft.com/v1.0/users/" + userPrincipalName + "/events?"
|
||||
"url": "https://graph.microsoft.com/v1.0/users/" + encodeURIComponent(userPrincipalName) + "/events?"
|
||||
+ "$filter=singleValueExtendedProperties/Any(ep: ep/id eq '" + FCLT_KEY_PROP_ID_NAME + "' and ep/value eq '" + res_rsv_ruimte_key + "')",
|
||||
"headers": { "Authorization": "Bearer " + token }
|
||||
}
|
||||
@@ -276,7 +276,7 @@ function getCalendarItems(userPrincipalName, skiptoken, deltatoken)
|
||||
|
||||
var request = {
|
||||
"method": "GET",
|
||||
"url": "https://graph.microsoft.com/v1.0/users/" + userPrincipalName + "/calendarView/delta?" + parms,
|
||||
"url": "https://graph.microsoft.com/v1.0/users/" + encodeURIComponent(userPrincipalName) + "/calendarView/delta?" + parms,
|
||||
"headers": { "Accept": "application/json", "Authorization": "Bearer " + token }
|
||||
}
|
||||
return doHTTP(request);
|
||||
@@ -684,7 +684,7 @@ function patchEventWithFcltKey(roomCalendarEvent, res_rsv_ruimte_key) {
|
||||
}
|
||||
var request = {
|
||||
"method": "PATCH",
|
||||
"url": "https://graph.microsoft.com/v1.0/users/" + userPrincipalName + "/events/" + organisatorEvent.id,
|
||||
"url": "https://graph.microsoft.com/v1.0/users/" + encodeURIComponent(userPrincipalName) + "/events/" + organisatorEvent.id,
|
||||
"body": JSON.stringify(data),
|
||||
"headers": { "Content-Type": "application/json", "Authorization": "Bearer " + token }
|
||||
}
|
||||
@@ -776,7 +776,7 @@ function createSubscription(userPrincipalName, res_ruimte_key, notificationUrl,
|
||||
var data = {
|
||||
"changeType" : changeType,
|
||||
"notificationUrl" : notificationUrl + "&res_ruimte=" + res_ruimte_key + "&hookcreated=" + new Date().toISOString(),
|
||||
"resource" : "/users/" + userPrincipalName + "/events",
|
||||
"resource" : "/users/" + encodeURIComponent(userPrincipalName) + "/events",
|
||||
"clientState" : clientState,
|
||||
"expirationDateTime": expirationDate
|
||||
}
|
||||
@@ -810,7 +810,7 @@ function deleteSubscription(userPrincipalName) {
|
||||
var response = getSubscriptions();
|
||||
var subscriptionList = [];
|
||||
if (response && response.value) {
|
||||
var resource = "/users/" + userPrincipalName + "/events";
|
||||
var resource = "/users/" + encodeURIComponent(userPrincipalName) + "/events";
|
||||
for (var i = 0; i < response.value.length; i++) {
|
||||
if (response.value[i].resource == resource) { // Filter op Extern ID
|
||||
subscriptionList.push(response.value[i].id);
|
||||
|
||||
@@ -301,12 +301,12 @@ function _resToGraph(oRs, CRUD, params)
|
||||
return false;
|
||||
}
|
||||
|
||||
var targetId = res_ruimte_extern_id;
|
||||
var userPrincipalName = res_ruimte_extern_id;
|
||||
if (getMSGraphSyncLevel() & 4) {
|
||||
targetId = host_mail;
|
||||
userPrincipalName = host_mail;
|
||||
}
|
||||
|
||||
if (targetId === undefined || targetId === null) {
|
||||
if (userPrincipalName === undefined || userPrincipalName === null) {
|
||||
__DoLog("Error: Kan geen gebruiker vinden namens wie we de reservering kunnen maken", "#FF0000");
|
||||
return false;
|
||||
}
|
||||
@@ -407,7 +407,7 @@ function _resToGraph(oRs, CRUD, params)
|
||||
}
|
||||
}
|
||||
|
||||
var url = (params.batch ? "" : "https://graph.microsoft.com/v1.0") + "/users/" + targetId + "/events";
|
||||
var url = (params.batch ? "" : "https://graph.microsoft.com/v1.0") + "/users/" + encodeURIComponent(userPrincipalName) + "/events";
|
||||
if (CRUD == "U" || CRUD == "D")
|
||||
url += "/" + organizerEventID;
|
||||
|
||||
|
||||
@@ -223,7 +223,7 @@ function cleanup_temp()
|
||||
var thisFolder = fso.GetFolder(p_thisPath);
|
||||
if (p_folder)
|
||||
{
|
||||
var regexp_f = new RegExp(p_folder);
|
||||
var regexp_f = new RegExp(p_folder, "i");
|
||||
var enumFolder = new Enumerator(thisFolder.SubFolders);
|
||||
for (; !enumFolder.atEnd(); enumFolder.moveNext())
|
||||
{
|
||||
@@ -271,7 +271,7 @@ function cleanup_temp()
|
||||
//__Log("scanFile: "+p_thisPath);
|
||||
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
||||
var thisFolder = fso.GetFolder(p_thisPath);
|
||||
var regexp_f = new RegExp(p_file_regexp);
|
||||
var regexp_f = new RegExp(p_file_regexp, "i");
|
||||
var enumFile = new Enumerator(thisFolder.Files);
|
||||
for (; !enumFile.atEnd(); enumFile.moveNext())
|
||||
{
|
||||
@@ -301,7 +301,7 @@ function cleanup_temp()
|
||||
var tempFolder = "../../../temp/" + CustId + "/";
|
||||
var cleanup_regexp_arr =
|
||||
[ { expr_folder: "", max_checklevel: 9, expr_file: "^(?:log_"+CustId+"_)\\S+\\\.html$", keep: "d30"} // Alle log_CustId_*.html-bestanden in TEMP\CustId van meer dan 30 dagen oud verwijderen.
|
||||
, { expr_folder: "", max_checklevel: 9, expr_file: "\\S+\\\.(xml|jpg|json|pdf)$", keep: "d10"} // Alle *.xml-, *.jpg- en *.json-bestanden in TEMP\CustId van meer dan 10 dagen oud verwijderen.
|
||||
, { expr_folder: "", max_checklevel: 9, expr_file: "\\S+\\\.(xml|jpg|json|pdf|eml|msg)$", keep: "d10"} // Alle *.xml-, *.jpg- en *.json-bestanden in TEMP\CustId van meer dan 10 dagen oud verwijderen.
|
||||
, { expr_folder: "", max_checklevel: 9, expr_file: "^(?:(putorders.*_"+CustId+"))\\S+\\\.log$", keep: "m1" } // Alle putordersI_CustId_*.log en putorders_CustId_*.log verwijderen van voor de 1-ste van 1 maand geleden.
|
||||
, { expr_folder: "^(putorders)$", max_checklevel: 9, expr_file: "^\\S+\.\\S+$", keep: "d30"} // Alles in TEMP\CustId\putorders van meer dan 30 dagen oud verwijderen.
|
||||
, { expr_folder: "^(ALG|BES|CNT|FIN|INS|MRK|MLD|RES|FAQ|.__NEW__)", max_checklevel: 2, expr_file: "^\\S+", keep: "d2" } // In mappen TEMP\CustId\Module\*__NEW__* bestanden die ouder zijn dan 2 dagen verwijderen, en als deze map dan leeg is de map ook verwijderen.
|
||||
|
||||
Reference in New Issue
Block a user