diff --git a/entity/Appointment_entity/recordcontainers/jdito/onInsert.js b/entity/Appointment_entity/recordcontainers/jdito/onInsert.js index 5c063693c6fe59f12d0b9c64fb27fbbfdb91856f..bf585bd47bf5287e395d2fd79dc758015b905c43 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/onInsert.js +++ b/entity/Appointment_entity/recordcontainers/jdito/onInsert.js @@ -1,293 +1,293 @@ -import("system.neon"); -import("system.calendars"); -import("system.vars"); -import("system.question"); -import("system.translate"); -import("system.text"); -import("system.datetime"); -import("system.db"); -import("system.result"); -import("system.tools"); - -var event = JSON.parse(vars.getString("$param.Entry_param")); - -event[calendars.TYPE] = calendars.VEVENT; -event[calendars.ID] = ""; //wenn hier neue id erstellt und mitgegeben wird, wird versucht einen termin mit dieser id zu finden, den es nicht gibt. also leer. -event[calendars.AFFECTEDUSERS] = vars.get("$field.ATTENDEES"); -event[calendars.STATUS] = vars.getString("$field.STATUS"); -//event[calendars.SUMMARY] = vars.getString("$field.SUMMARY"); -event[calendars.LOCATION] = vars.get("$field.LOCATION"); -event[calendars.DESCRIPTION] = vars.get("$field.DESCRIPTION"); -event[calendars.DTSTART] = vars.get("$field.BEGIN"); -event[calendars.DTEND] = vars.get("$field.END"); -event[calendars.CLASSIFICATION] = vars.get("$field.CLASSIFICATION"); -event[calendars.TRANSPARENCY] = vars.get("$field.TRANSPARENCY"); -event[calendars.CATEGORIES] = vars.get("$field.CATEGORIES"); -if(vars.get("$field.RRULE")) - event[calendars.RRULE] = [vars.get("$field.RRULE")]; -if (vars.get("$field.REMINDER") != undefined && vars.get("$field.REMINDER") != "") -{ - event[calendars.HASREMINDER] = "true"; - event[calendars.REMINDER_DURATION] = vars.get("$field.REMINDER"); -} -var idstringarray = calendars.insert([event]); -event[calendars.ID] = idstringarray[0]; -neon.setFieldValue("$field.UID", event[calendars.ID]); - -vars.set("$context.editmode", calendars.MODE_UPDATE); - - - -// Liefert die Benutzer zurück, auf die keine Schreibrechte bestehen -function getReadOnlyUser() -{ - var writeable = calendars.getFullCalendarUsers(calendars.RIGHT_WRITE); - var affectedusers = vars.get("$context.affectedusers"); - var readonly = new Array(); - - for ( i = 0; i < affectedusers.length; i++) - { - var user = affectedusers[i][0]; - if (!isWriteable(user, writeable)) - readonly.push(affectedusers[i][3]); - } - return readonly; -} - -// Liefert TRUE, wenn der Benutzer bei denen mit Schreibberechtigungen enthalten ist -function isWriteable(user, writeable) -{ - for (var i = 0; i < writeable.length; i++) - { - if (writeable[i][0] == calendars.getCalendarUser(user)) - return true; - } - return false; -} - -// Berechnet das Ende der Recurrence -function recurrencend(event) -{ - var rec_end = vars.getString("$field.rec_end"); - - // Automatische Erkennung, was gewollt ist - if (rec_end == "") - { - if (vars.get("$field.rec_end_count") != "") - rec_end = "Endet nach Anzahl Terminen"; - else if (vars.get("$field.rec_end_date") != "") - rec_end = "Endet am"; - } - - if (rec_end == "" || rec_end == "Kein Enddatum") - { - // Nichts - } - else if (rec_end == "Endet nach Anzahl Terminen") - { - event[calendars.RRULE][0] += (";COUNT=" + vars.get("$field.rec_end_count")); - } - else if (rec_end == "Endet am") - { - var dat = vars.get("$field.rec_end_date"); - var start = vars.get("$field.start_date"); - var localTime = datetime.toDate(dat, translate.text("yyyyMMdd")) + datetime.toDate(start, "HHmmss"); - var utcTime = datetime.toLong(localTime, "yyyyMMddHHmmss"); - event[calendars.RRULE][0] += (";UNTIL=" + datetime.toDate(utcTime, "yyyyMMdd\'T\'HHmmss\'Z\'", "UTC")); - } -} - -/** - * Berechnet die Wiederholung - * - * @param event Das fertige Event. Hier die Reccurrence speichern - */ -function calcrecurrence(event) -{ - var rec_type = vars.get("$field.rec_type"); - - if (rec_type == "") - { - // Nichts - } - else if (rec_type == "Keine") - { - } - else if (rec_type == "Täglich") - { - rec_daily(event); - } - else if (rec_type == "Wöchentlich") - { - rec_weekly(event); - } - else if (rec_type == "Monatlich") - { - rec_monthly(event); - } - else if (rec_type == "Jährlich") - { - rec_yearly(event); - } - else - { - question.showMessage("Internal (1) " + rec_type); - } -} -/***********************/ -function rec_yearly(event) -{ - var rec_year = vars.get("$field.rec_yearly"); - var rec_yearly_month = vars.get("$field.rec_yearly_month"); - var rec_yearly_day = vars.get("$field.rec_yearly_day"); - var month; - var day; - - if (rec_year == "") - { - if (rec_yearly_month != "" && rec_yearly_day != "") - rec_year = "Jeden # #"; - else if (rec_yearly_month != "" && vars.get("$field.rec_yearly_day2") != "" && vars.get("$field.rec_yearly_number2") != "") - rec_year = "Am #. # im #"; - } - - if (rec_year == "" || (rec_yearly_month == "" && rec_yearly_day == "" )) - { - question.showMessage(translate.text("yearly series not specified")); - } - else if (rec_year == "Jeden # #") - { - month = rec_yearly_month; - day = rec_yearly_day; - event[calendars.RRULE] = new Array("FREQ=YEARLY;BYMONTHDAY="+day+";BYMONTH="+month); - } - else if (rec_year == "Am #. # im #") - { - month = vars.get("$field.rec_yearly_month2"); - day = vars.get("$field.rec_yearly_day2"); - var number = vars.get("$field.rec_yearly_number2"); - event[calendars.RRULE] = new Array("FREQ=YEARLY;BYMONTH="+month+";BYDAY="+number+day); - } -} -/***********************/ -function rec_monthly(event) -{ - var rec_month = vars.get("$field.rec_month"); - var rec_monthly_day = vars.get("$field.rec_monthly_day"); - var rec_monthly_interval = vars.get("$field.rec_monthly_interval"); - var day; - var interval; - - if (rec_month == "") - - { - if (rec_monthly_day != "" && rec_monthly_interval != "") - rec_month = "Am #. jedes #. Monat"; - else if (vars.get("$field.rec_monthly_day2") != "" && vars.get("$field.rec_monthly_interval2") != "" && vars.get("$field.rec_monthly_weekday2") != "") - rec_month = "Am #. # jeden #. Monat"; - } - - if (rec_month == "" || (rec_monthly_day == "" && rec_monthly_interval != "")) - { - question.showMessage(translate.text("Ignore series")); - } - else if (rec_month == "Am #. jedes #. Monat") - { - day = rec_monthly_day; - interval = rec_monthly_interval; - event[calendars.RRULE] = new Array("FREQ=MONTHLY;INTERVAL=" + interval + ";BYMONTHDAY=" + day); - } - else if(rec_month == "Am #. # jeden #. Monat") - { - day = vars.get("$field.rec_monthly_day2"); - interval = vars.get("$field.rec_monthly_interval2"); - var weekday = vars.get("$field.rec_monthly_weekday2"); - event[calendars.RRULE] = new Array("FREQ=MONTHLY;INTERVAL=" + interval + ";BYDAY=" + day + weekday); - } -} -/***********************/ -function rec_weekly(event) -{ - - var rec_weekly_intervall = vars.get("$field.rec_weekly_intervall"); - if (rec_weekly_intervall == "") - rec_weekly_intervall = "1"; - - var days = new Array(); - var count = 0; - if (vars.get("$field.rec_weekly_mo") == "true") - { - days[count] = "MO"; - count++; - } - if (vars.get("$field.rec_weekly_di") == "true") - { - days[count] = "TU"; - count++; - } - if (vars.get("$field.rec_weekly_mi") == "true") - { - days[count] = "WE"; - count++; - } - if (vars.get("$field.rec_weekly_do") == "true") - { - days[count] = "TH"; - count++; - } - if (vars.get("$field.rec_weekly_fr") == "true") - { - days[count] = "FR"; - count++; - } - if (vars.get("$field.rec_weekly_sa") == "true") - { - days[count] = "SA"; - count++; - } - if (vars.get("$field.rec_weekly_so") == "true") - { - days[count] = "SU"; - count++; - } - if (count > 0) - { - event[calendars.RRULE] = new Array("FREQ=WEEKLY;INTERVAL=" + rec_weekly_intervall + ";WKST=MO;BYDAY="); - for (var i = 0; i < count; i++) - { - event[calendars.RRULE][0] += days[i]; - if (i+1 < count) - { - event[calendars.RRULE][0] += ","; - } - } - } -} -/***********************/ -function rec_daily(event) -{ - var rec_dailytype = vars.get("$field.rec_dailytype"); - var rec_dailydays = vars.get("$field.rec_daily_days"); - if (rec_dailytype == "") - { - if (rec_dailydays != "") - rec_dailytype = "Alle # Tage"; - } - - if (rec_dailytype == "" || rec_dailydays == "") - { - question.showMessage(translate.text("Ignore daily series")); - } - else if (rec_dailytype == "Alle # Tage") - { - event[calendars.RRULE] = new Array("FREQ=DAILY;INTERVAL=" + rec_dailydays); - } - else if (rec_dailytype == "Jeden Arbeitstag") - { - event[calendars.RRULE][0] = new Array("FREQ=WEEKLY;WKST=MO;BYDAY=MO,TU,WE,TH,FR"); - } - else - { - question.showMessage(translate.text("Internal (2)") + " " + rec_dailytype); - } +import("system.neon"); +import("system.calendars"); +import("system.vars"); +import("system.question"); +import("system.translate"); +import("system.text"); +import("system.datetime"); +import("system.db"); +import("system.result"); +import("system.tools"); + +var event = JSON.parse(vars.getString("$param.Entry_param")); + +event[calendars.TYPE] = calendars.VEVENT; +event[calendars.ID] = ""; //wenn hier neue id erstellt und mitgegeben wird, wird versucht einen termin mit dieser id zu finden, den es nicht gibt. also leer. +event[calendars.AFFECTEDUSERS] = vars.get("$field.ATTENDEES"); +event[calendars.STATUS] = vars.getString("$field.STATUS"); +event[calendars.SUMMARY] = vars.getString("$field.SUMMARY"); +event[calendars.LOCATION] = vars.get("$field.LOCATION"); +event[calendars.DESCRIPTION] = vars.get("$field.DESCRIPTION"); +event[calendars.DTSTART] = vars.get("$field.BEGIN"); +event[calendars.DTEND] = vars.get("$field.END"); +event[calendars.CLASSIFICATION] = vars.get("$field.CLASSIFICATION"); +event[calendars.TRANSPARENCY] = vars.get("$field.TRANSPARENCY"); +event[calendars.CATEGORIES] = vars.get("$field.CATEGORIES"); +if(vars.get("$field.RRULE")) + event[calendars.RRULE] = [vars.get("$field.RRULE")]; +if (vars.get("$field.REMINDER") != undefined && vars.get("$field.REMINDER") != "") +{ + event[calendars.HASREMINDER] = "true"; + event[calendars.REMINDER_DURATION] = vars.get("$field.REMINDER"); +} +var idstringarray = calendars.insert([event]); +event[calendars.ID] = idstringarray[0]; +neon.setFieldValue("$field.UID", event[calendars.ID]); + +vars.set("$context.editmode", calendars.MODE_UPDATE); + + + +// Liefert die Benutzer zurück, auf die keine Schreibrechte bestehen +function getReadOnlyUser() +{ + var writeable = calendars.getFullCalendarUsers(calendars.RIGHT_WRITE); + var affectedusers = vars.get("$context.affectedusers"); + var readonly = new Array(); + + for ( i = 0; i < affectedusers.length; i++) + { + var user = affectedusers[i][0]; + if (!isWriteable(user, writeable)) + readonly.push(affectedusers[i][3]); + } + return readonly; +} + +// Liefert TRUE, wenn der Benutzer bei denen mit Schreibberechtigungen enthalten ist +function isWriteable(user, writeable) +{ + for (var i = 0; i < writeable.length; i++) + { + if (writeable[i][0] == calendars.getCalendarUser(user)) + return true; + } + return false; +} + +// Berechnet das Ende der Recurrence +function recurrencend(event) +{ + var rec_end = vars.getString("$field.rec_end"); + + // Automatische Erkennung, was gewollt ist + if (rec_end == "") + { + if (vars.get("$field.rec_end_count") != "") + rec_end = "Endet nach Anzahl Terminen"; + else if (vars.get("$field.rec_end_date") != "") + rec_end = "Endet am"; + } + + if (rec_end == "" || rec_end == "Kein Enddatum") + { + // Nichts + } + else if (rec_end == "Endet nach Anzahl Terminen") + { + event[calendars.RRULE][0] += (";COUNT=" + vars.get("$field.rec_end_count")); + } + else if (rec_end == "Endet am") + { + var dat = vars.get("$field.rec_end_date"); + var start = vars.get("$field.start_date"); + var localTime = datetime.toDate(dat, translate.text("yyyyMMdd")) + datetime.toDate(start, "HHmmss"); + var utcTime = datetime.toLong(localTime, "yyyyMMddHHmmss"); + event[calendars.RRULE][0] += (";UNTIL=" + datetime.toDate(utcTime, "yyyyMMdd\'T\'HHmmss\'Z\'", "UTC")); + } +} + +/** + * Berechnet die Wiederholung + * + * @param event Das fertige Event. Hier die Reccurrence speichern + */ +function calcrecurrence(event) +{ + var rec_type = vars.get("$field.rec_type"); + + if (rec_type == "") + { + // Nichts + } + else if (rec_type == "Keine") + { + } + else if (rec_type == "Täglich") + { + rec_daily(event); + } + else if (rec_type == "Wöchentlich") + { + rec_weekly(event); + } + else if (rec_type == "Monatlich") + { + rec_monthly(event); + } + else if (rec_type == "Jährlich") + { + rec_yearly(event); + } + else + { + question.showMessage("Internal (1) " + rec_type); + } +} +/***********************/ +function rec_yearly(event) +{ + var rec_year = vars.get("$field.rec_yearly"); + var rec_yearly_month = vars.get("$field.rec_yearly_month"); + var rec_yearly_day = vars.get("$field.rec_yearly_day"); + var month; + var day; + + if (rec_year == "") + { + if (rec_yearly_month != "" && rec_yearly_day != "") + rec_year = "Jeden # #"; + else if (rec_yearly_month != "" && vars.get("$field.rec_yearly_day2") != "" && vars.get("$field.rec_yearly_number2") != "") + rec_year = "Am #. # im #"; + } + + if (rec_year == "" || (rec_yearly_month == "" && rec_yearly_day == "" )) + { + question.showMessage(translate.text("yearly series not specified")); + } + else if (rec_year == "Jeden # #") + { + month = rec_yearly_month; + day = rec_yearly_day; + event[calendars.RRULE] = new Array("FREQ=YEARLY;BYMONTHDAY="+day+";BYMONTH="+month); + } + else if (rec_year == "Am #. # im #") + { + month = vars.get("$field.rec_yearly_month2"); + day = vars.get("$field.rec_yearly_day2"); + var number = vars.get("$field.rec_yearly_number2"); + event[calendars.RRULE] = new Array("FREQ=YEARLY;BYMONTH="+month+";BYDAY="+number+day); + } +} +/***********************/ +function rec_monthly(event) +{ + var rec_month = vars.get("$field.rec_month"); + var rec_monthly_day = vars.get("$field.rec_monthly_day"); + var rec_monthly_interval = vars.get("$field.rec_monthly_interval"); + var day; + var interval; + + if (rec_month == "") + + { + if (rec_monthly_day != "" && rec_monthly_interval != "") + rec_month = "Am #. jedes #. Monat"; + else if (vars.get("$field.rec_monthly_day2") != "" && vars.get("$field.rec_monthly_interval2") != "" && vars.get("$field.rec_monthly_weekday2") != "") + rec_month = "Am #. # jeden #. Monat"; + } + + if (rec_month == "" || (rec_monthly_day == "" && rec_monthly_interval != "")) + { + question.showMessage(translate.text("Ignore series")); + } + else if (rec_month == "Am #. jedes #. Monat") + { + day = rec_monthly_day; + interval = rec_monthly_interval; + event[calendars.RRULE] = new Array("FREQ=MONTHLY;INTERVAL=" + interval + ";BYMONTHDAY=" + day); + } + else if(rec_month == "Am #. # jeden #. Monat") + { + day = vars.get("$field.rec_monthly_day2"); + interval = vars.get("$field.rec_monthly_interval2"); + var weekday = vars.get("$field.rec_monthly_weekday2"); + event[calendars.RRULE] = new Array("FREQ=MONTHLY;INTERVAL=" + interval + ";BYDAY=" + day + weekday); + } +} +/***********************/ +function rec_weekly(event) +{ + + var rec_weekly_intervall = vars.get("$field.rec_weekly_intervall"); + if (rec_weekly_intervall == "") + rec_weekly_intervall = "1"; + + var days = new Array(); + var count = 0; + if (vars.get("$field.rec_weekly_mo") == "true") + { + days[count] = "MO"; + count++; + } + if (vars.get("$field.rec_weekly_di") == "true") + { + days[count] = "TU"; + count++; + } + if (vars.get("$field.rec_weekly_mi") == "true") + { + days[count] = "WE"; + count++; + } + if (vars.get("$field.rec_weekly_do") == "true") + { + days[count] = "TH"; + count++; + } + if (vars.get("$field.rec_weekly_fr") == "true") + { + days[count] = "FR"; + count++; + } + if (vars.get("$field.rec_weekly_sa") == "true") + { + days[count] = "SA"; + count++; + } + if (vars.get("$field.rec_weekly_so") == "true") + { + days[count] = "SU"; + count++; + } + if (count > 0) + { + event[calendars.RRULE] = new Array("FREQ=WEEKLY;INTERVAL=" + rec_weekly_intervall + ";WKST=MO;BYDAY="); + for (var i = 0; i < count; i++) + { + event[calendars.RRULE][0] += days[i]; + if (i+1 < count) + { + event[calendars.RRULE][0] += ","; + } + } + } +} +/***********************/ +function rec_daily(event) +{ + var rec_dailytype = vars.get("$field.rec_dailytype"); + var rec_dailydays = vars.get("$field.rec_daily_days"); + if (rec_dailytype == "") + { + if (rec_dailydays != "") + rec_dailytype = "Alle # Tage"; + } + + if (rec_dailytype == "" || rec_dailydays == "") + { + question.showMessage(translate.text("Ignore daily series")); + } + else if (rec_dailytype == "Alle # Tage") + { + event[calendars.RRULE] = new Array("FREQ=DAILY;INTERVAL=" + rec_dailydays); + } + else if (rec_dailytype == "Jeden Arbeitstag") + { + event[calendars.RRULE][0] = new Array("FREQ=WEEKLY;WKST=MO;BYDAY=MO,TU,WE,TH,FR"); + } + else + { + question.showMessage(translate.text("Internal (2)") + " " + rec_dailytype); + } } \ No newline at end of file