From 3ca44156d01cd9b6ccad122de1506fedc4bb74f0 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Mon, 2 Nov 2020 10:38:22 +0100 Subject: [PATCH] Revert Revert #1060919 Calendar Fixes --- .../Appointment_entity/grantDeleteProcess.js | 8 ++++++-- .../Appointment_entity/grantUpdateProcess.js | 10 ++++++++-- .../recordcontainers/jdito/contentProcess.js | 3 ++- .../recordcontainers/jdito/onDelete.js | 20 ++++++++++++++----- 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/entity/Appointment_entity/grantDeleteProcess.js b/entity/Appointment_entity/grantDeleteProcess.js index 4caa2d99cfd..aef302f1112 100644 --- a/entity/Appointment_entity/grantDeleteProcess.js +++ b/entity/Appointment_entity/grantDeleteProcess.js @@ -2,6 +2,10 @@ import("system.vars"); import("system.result"); import("system.calendars"); import("system.text"); +import("system.tools"); -var owner = text.decodeMS(JSON.parse(vars.get("$param.Entry_param"))["h"])[1].split(":")[1]; -result.string(calendars.hasPermission([owner], calendars.VEVENT, "WRITE")); \ No newline at end of file + +var user = tools.getCurrentUser(); +var calUser = calendars.getCalendarUser(user["title"]); +var calUserCn = text.decodeMS(calUser)[1].split(":")[1]; +result.string(calendars.hasPermission(calUserCn, calendars.VEVENT, "WRITE")); \ No newline at end of file diff --git a/entity/Appointment_entity/grantUpdateProcess.js b/entity/Appointment_entity/grantUpdateProcess.js index 3562ea4a6c4..e6ac4c8426c 100644 --- a/entity/Appointment_entity/grantUpdateProcess.js +++ b/entity/Appointment_entity/grantUpdateProcess.js @@ -2,7 +2,13 @@ import("system.vars"); import("system.result"); import("system.calendars"); import("system.text"); +import("system.tools"); +import("system.logging"); -var owner = text.decodeMS(JSON.parse(vars.get("$param.Entry_param"))["h"])[1].split(":")[1]; -result.string(calendars.hasPermission([owner], calendars.VEVENT, "WRITE")); +var user = tools.getCurrentUser(); +var calUser = calendars.getCalendarUser(user["title"]); +var calUserCn = text.decodeMS(calUser)[1].split(":")[1]; +var permitted = calendars.hasPermission(calUserCn, calendars.VEVENT, "WRITE"); + +result.string(permitted); diff --git a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js index e56415a0faf..3d5ff22eafe 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js @@ -9,6 +9,7 @@ import("system.datetime"); import("system.eMath"); import("system.util"); import("system.neon"); +import("system.text"); var appointmentSelect = newSelect("APPOINTMENT_ID").from("AB_APPOINTMENTLINK"); var appointmentUids; @@ -77,7 +78,7 @@ function buildEntry(pEntry, pMasterentry) if(pEntry[calendars.ORGANIZER2] != undefined) var organizer = pEntry[calendars.ORGANIZER2]["paramvalue"]; if(pEntry[calendars.USER2] != undefined) - var owner = pEntry[calendars.USER2]["paramvalue"]; + var owner = JSON.stringify(pEntry[calendars.USER2]); var status = pEntry[calendars.STATUS]; var location = pEntry[calendars.LOCATION]; var reminder = pEntry[calendars.REMINDER_DURATION]; diff --git a/entity/Appointment_entity/recordcontainers/jdito/onDelete.js b/entity/Appointment_entity/recordcontainers/jdito/onDelete.js index 4e0e5c7a5c1..6f6249aee33 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/onDelete.js +++ b/entity/Appointment_entity/recordcontainers/jdito/onDelete.js @@ -1,20 +1,30 @@ +import("system.logging"); import("Sql_lib"); import("system.neon"); import("system.calendars"); import("system.vars"); -if (vars.exists("$param.Entry_param")) +var uid; + +if (vars.get("$param.Entry_param") != null) { var entry = JSON.parse(vars.getString("$param.Entry_param")); var reccurenceid = entry[calendars.RECURRENCEID]; + if (reccurenceid == undefined) reccurenceid = null; - calendars.removeEntryByUID(calendars.VEVENT, entry[calendars.USER2]["cn"], entry[calendars.ID], reccurenceid) + uid = entry[calendars.ID]; + calendars.removeEntryByUID(calendars.VEVENT, entry[calendars.USER2]["cn"], uid, reccurenceid); +} +else if(vars.get("$field.OWNER")) +{ + uid = vars.get("$field.UID"); + calendars.removeEntryByUID(calendars.VEVENT, JSON.parse(vars.get("$field.OWNER"))["cn"], uid, vars.get("$field.RECURRENCEID")); +} /** * Deletes ApointmentLinks referring to the deleted Appointment. */ - newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", entry[calendars.ID]) - .deleteData(); -} \ No newline at end of file + newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", uid) + .deleteData(); \ No newline at end of file -- GitLab