Skip to content
Snippets Groups Projects
Commit 52eed667 authored by Andreas Schindlbeck's avatar Andreas Schindlbeck
Browse files

Appointment title fix

parent ed3fb6e9
No related branches found
No related tags found
No related merge requests found
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment