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

Appointments auf neuen RecordContainer umgestellt

parent 931450c9
No related branches found
No related tags found
No related merge requests found
...@@ -5,41 +5,17 @@ ...@@ -5,41 +5,17 @@
<majorModelMode>DISTRIBUTED</majorModelMode> <majorModelMode>DISTRIBUTED</majorModelMode>
<recordContainerType>JDITO</recordContainerType> <recordContainerType>JDITO</recordContainerType>
<alias>Data_alias</alias> <alias>Data_alias</alias>
<jDitoRecordAlias>Data_alias</jDitoRecordAlias> <jDitoRecordAlias></jDitoRecordAlias>
<fields> <fields />
<element>UID</element>
<element>BACKGROUNDCOLOR</element>
<element>FONTCOLOR</element>
<element>ATTENDEESLENGTH</element>
<element>STARTDATE</element>
<element>ENDDATE</element>
<element>SUMMARY</element>
<element>ORGANIZER</element>
<element>ATTENDEES</element>
<element>STATUS</element>
<element>LINKS</element>
<element>DESCRIPTION</element>
<element>LOCATION</element>
<element>ICON</element>
<element>CLASSIFICATION</element>
<element>TRANSPARENCY</element>
<element>CATEGORIES</element>
<element>REMINDER</element>
<element>RRULE</element>
<element>RECURRENCEID</element>
<element>SAFESCOPEFIELD</element>
<element>MASTERBEGIN</element>
<element>MASTEREND</element>
</fields>
<contentProcess>%aditoprj%/entity/Appointment_entity/contentProcess.js</contentProcess> <contentProcess>%aditoprj%/entity/Appointment_entity/contentProcess.js</contentProcess>
<onInsert>%aditoprj%/entity/Appointment_entity/onInsert.js</onInsert> <onInsert>%aditoprj%/entity/Appointment_entity/onInsert.js</onInsert>
<onUpdate>%aditoprj%/entity/Appointment_entity/onUpdate.js</onUpdate> <onUpdate>%aditoprj%/entity/Appointment_entity/onUpdate.js</onUpdate>
<onDelete>%aditoprj%/entity/Appointment_entity/onDelete.js</onDelete> <onDelete>%aditoprj%/entity/Appointment_entity/onDelete.js</onDelete>
<recordContainer>jDitoRC</recordContainer>
<entityFields> <entityFields>
<entityField> <entityField>
<name>SUMMARY</name> <name>SUMMARY</name>
<title>Betreff</title> <title>Betreff</title>
<fieldName>SUMMARY</fieldName>
<valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/summary/valueProcess.js</valueProcess> <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/summary/valueProcess.js</valueProcess>
</entityField> </entityField>
<entityParameter> <entityParameter>
...@@ -49,23 +25,19 @@ ...@@ -49,23 +25,19 @@
</entityParameter> </entityParameter>
<entityField> <entityField>
<name>DESCRIPTION</name> <name>DESCRIPTION</name>
<fieldName>DESCRIPTION</fieldName>
</entityField> </entityField>
<entityField> <entityField>
<name>CLASSIFICATION</name> <name>CLASSIFICATION</name>
<fieldName>CLASSIFICATION</fieldName>
<possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/classification/possibleItemsProcess.js</possibleItemsProcess> <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/classification/possibleItemsProcess.js</possibleItemsProcess>
<valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/classification/valueProcess.js</valueProcess> <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/classification/valueProcess.js</valueProcess>
</entityField> </entityField>
<entityField> <entityField>
<name>BEGIN</name> <name>BEGIN</name>
<fieldName>STARTDATE</fieldName>
<selectionMode>SINGLE</selectionMode> <selectionMode>SINGLE</selectionMode>
<valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/begin/valueProcess.js</valueProcess> <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/begin/valueProcess.js</valueProcess>
</entityField> </entityField>
<entityField> <entityField>
<name>END</name> <name>END</name>
<fieldName>ENDDATE</fieldName>
<valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/end/valueProcess.js</valueProcess> <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/end/valueProcess.js</valueProcess>
</entityField> </entityField>
<entityFieldGroup> <entityFieldGroup>
...@@ -79,23 +51,19 @@ ...@@ -79,23 +51,19 @@
</entityFieldGroup> </entityFieldGroup>
<entityField> <entityField>
<name>STATUS</name> <name>STATUS</name>
<fieldName>STATUS</fieldName>
<possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess> <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess>
</entityField> </entityField>
<entityField> <entityField>
<name>LOCATION</name> <name>LOCATION</name>
<fieldName>LOCATION</fieldName>
</entityField> </entityField>
<entityField> <entityField>
<name>REMINDER_CHECK</name> <name>REMINDER_CHECK</name>
</entityField> </entityField>
<entityField> <entityField>
<name>REMINDER</name> <name>REMINDER</name>
<fieldName>REMINDER</fieldName>
</entityField> </entityField>
<entityField> <entityField>
<name>CATEGORIES</name> <name>CATEGORIES</name>
<fieldName>CATEGORIES</fieldName>
<possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/categories/possibleItemsProcess.js</possibleItemsProcess> <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/categories/possibleItemsProcess.js</possibleItemsProcess>
<newItemsAllowed v="true" /> <newItemsAllowed v="true" />
<valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/categories/valueProcess.js</valueProcess> <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/categories/valueProcess.js</valueProcess>
...@@ -107,7 +75,6 @@ ...@@ -107,7 +75,6 @@
</entityField> </entityField>
<entityField> <entityField>
<name>TRANSPARENCY</name> <name>TRANSPARENCY</name>
<fieldName>TRANSPARENCY</fieldName>
</entityField> </entityField>
<entityActionGroup> <entityActionGroup>
<name>PartStatActionGroup</name> <name>PartStatActionGroup</name>
...@@ -147,27 +114,70 @@ ...@@ -147,27 +114,70 @@
</entityParameter> </entityParameter>
<entityField> <entityField>
<name>ORGANIZER</name> <name>ORGANIZER</name>
<fieldName>ORGANIZER</fieldName>
</entityField> </entityField>
<entityField> <entityField>
<name>RRULE</name> <name>RRULE</name>
<fieldName>RRULE</fieldName>
</entityField> </entityField>
<entityField> <entityField>
<name>RECURRENCEID</name> <name>RECURRENCEID</name>
<fieldName>RECURRENCEID</fieldName>
</entityField> </entityField>
<entityField> <entityField>
<name>SAFESCOPEFIELD</name> <name>SAFESCOPEFIELD</name>
<fieldName>SAFESCOPEFIELD</fieldName>
</entityField> </entityField>
<entityField> <entityField>
<name>MASTERBEGIN</name> <name>MASTERBEGIN</name>
<fieldName>MASTERBEGIN</fieldName>
</entityField> </entityField>
<entityField> <entityField>
<name>MASTEREND</name> <name>MASTEREND</name>
<fieldName>MASTEREND</fieldName> </entityField>
<entityField>
<name>UID</name>
</entityField>
<entityField>
<name>ATTENDEESLENGTH</name>
</entityField>
<entityField>
<name>LINKS</name>
</entityField>
<entityField>
<name>ICON</name>
</entityField> </entityField>
</entityFields> </entityFields>
<recordContainers>
<jDitoRecordContainer>
<name>jDitoRC</name>
<title>jDitoRC</title>
<description></description>
<jDitoRecordAlias>_____SYSTEMALIAS</jDitoRecordAlias>
<fields />
<contentProcess>%aditoprj%/entity/Appointment_entity/recordcontainers/jditorc/contentProcess.js</contentProcess>
<onInsert>%aditoprj%/entity/Appointment_entity/recordcontainers/jditorc/onInsert.js</onInsert>
<onUpdate>%aditoprj%/entity/Appointment_entity/recordcontainers/jditorc/onUpdate.js</onUpdate>
<onDelete>%aditoprj%/entity/Appointment_entity/recordcontainers/jditorc/onDelete.js</onDelete>
<recordFields>
<element>UID.value</element>
<element>ATTENDEESLENGTH.value</element>
<element>BEGIN.value</element>
<element>END.value</element>
<element>SUMMARY.value</element>
<element>ORGANIZER.value</element>
<element>ATTENDEES.value</element>
<element>STATUS.value</element>
<element>LINKS.value</element>
<element>DESCRIPTION.value</element>
<element>LOCATION.value</element>
<element>ICON.value</element>
<element>CLASSIFICATION.value</element>
<element>TRANSPARENCY.value</element>
<element>CATEGORIES.value</element>
<element>REMINDER.value</element>
<element>REMINDER_CHECK.value</element>
<element>RRULE.value</element>
<element>RECURRENCEID.value</element>
<element>SAFESCOPEFIELD.value</element>
<element>MASTERBEGIN.value</element>
<element>MASTEREND.value</element>
</recordFields>
</jDitoRecordContainer>
</recordContainers>
</entity> </entity>
import("system.logging");
import("system.result");
import("system.vars");
import("system.calendars");
import("system.datetime");
import("system.eMath");
import("system.util");
// $param.entry is potentially a recurrence exception.
if(vars.exists("$param.entry"))
{
var entry = JSON.parse(vars.getString("$param.entry"));
var masterEntry = null;
if (vars.exists("$param.masterEntry") && vars.get("$param.masterEntry") != "") {
masterEntry = JSON.parse(vars.get("$param.masterEntry"));
}
//logging.log("Appointment is recurrence exception: " + (masterEntry != null))
var uid = entry[calendars.ID];
var summary = entry[calendars.SUMMARY];
var attendees = entry[calendars.AFFECTEDUSERS];
var startdate = entry[calendars.DTSTART];
var enddate = entry[calendars.DTEND];
var links = entry[calendars.LINKS];
var description = entry[calendars.DESCRIPTION];
var organizer = entry[calendars.ORGANIZER2]["paramvalue"];
var status = entry[calendars.STATUS];
var location = entry[calendars.LOCATION];
var reminder = entry[calendars.REMINDER_DURATION];
var remindercheck = entry[calendars.HASREMINDER]
var classification = entry[calendars.CLASSIFICATION];
var transparency = entry[calendars.TRANSPARENCY];
var categories = entry[calendars.CATEGORIES];
var masterBegin = masterEntry != null ? masterEntry[calendars.DTSTART] : null
var masterEnd = masterEntry != null ? masterEntry[calendars.DTEND] : null
// Recurrence
var recurrenceID = entry[calendars.RECURRENCEID];
var rrule = null;
if (masterEntry != null) { // Entry is a recurrence exception, therefore get rrule from master
rrule = masterEntry[calendars.RRULE] != null ? masterEntry[calendars.RRULE][0] : null;
} else {
rrule = entry[calendars.RRULE] != null ? entry[calendars.RRULE][0] : null;
}
//@TODO Icon
result.object([
[uid, '', '', attendees.length, startdate, enddate, summary, organizer,
attendees, status, links, description, location, '', classification,
transparency, categories, reminder, rrule, recurrenceID, null, masterBegin, masterEnd] //reminder, remindercheck
]);
}
else
{
var filter = ( vars.exists("$param.p_filter")
&& vars.get("$param.p_filter") != null
&& vars.get("$param.p_filter") != undefined) ? vars.get("$param.p_filter") : "";
//For the Tableview in Task_Date
//var events = getEvents(filter);
var cond = {
TYPE_1: calendars.VEVENT
,USER_1: vars.get("$sys.user")
,COUNT: "1"
};
//var entries = calendars.getExpandedEntries(cond, new Long(datetime.date()), new Long(eMath.addInt(datetime.date(), datetime.ONE_DAY * 7)));
//for (i = 0; i < events.length; i++)
//{
// events[i].push([""])
// var count = events[i][3];
// var iconInfo = (count > 1 ? "gruppentermin" : "einzeltermin");
// var icon = (getIcon("termine_aufgaben", iconInfo));
// events[i] = events[i].concat(icon);
//}
//result.object(events);
}
import("system.neon");
import("system.calendars");
import("system.vars");
if (vars.exists("param.entry"))
{
var entry = JSON.parse(vars.getString("param.entry"));
var reccurenceid = entry[calendars.RECURRENCEID];
if (reccurenceid == undefined) reccurenceid = null;
calendars.removeEntryByUID(calendars.VEVENT, vars.get("$sys.user"), entry[calendars.ID], reccurenceid)
}
if(vars.exists("$sys.ancestorimageuid") && vars.get("$sys.ancestorimageuid") != null)
{
neon.closeImage(vars.getString("$sys.currentimage"), true);
neon.refresh(vars.get("$sys.ancestorimageuid"));
}
\ No newline at end of file
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"));
var ok = false;
event[calendars.TYPE] = calendars.VEVENT;
event[calendars.ATTENDEES] = 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.REMINDER") != undefined && vars.get("$field.REMINDER") != "")
{
event[calendars.HASREMINDER] = "true";
event[calendars.REMINDER_DURATION] = vars.get("$field.REMINDER");
}
event[calendars.ID] = calendars.insert([event])[0];
vars.set("$image.editmode", calendars.MODE_UPDATE);
ok = true;
// Liefert die Benutzer zurück, auf die keine Schreibrechte bestehen
function getReadOnlyUser()
{
var writeable = calendars.getFullCalendarUsers(calendars.RIGHT_WRITE);
var affectedusers = vars.get("$image.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("Jährliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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("Monatliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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("Tägliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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
import("system.neon");
import("system.calendars");
import("system.vars");
import("system.question");
import("system.translate");
import("system.text");
import("system.swing");
import("system.datetime");
import("system.db");
import("system.result");
import("system.tools");
// Dieser Prozess speichert die im Frame angezeigten Daten
// Je nach Modus (INSERT, EDIT) wird ein neuer Datensatz angelegt oder der alte editiert
if(vars.exists("$param.entry"))
{
var event = JSON.parse(vars.getString("$param.entry"));
var ok = false;
if ( calendars.getBackendType() == calendars.BACKEND_EXCHANGEWS && event[calendars.ORGANIZER2]["cn"] != event[calendars.USER2]["cn"])
{
question.showMessage(translate.text("Ein Gruppentermin kann nur durch den Organisator bearbeitet werden."));
ok = true;
}
else
{
event[calendars.TYPE] = calendars.VEVENT;
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.HASREMINDER] = "false";
event[calendars.CLASSIFICATION] = vars.get("$field.CLASSIFICATION");
event[calendars.CATEGORIES] = vars.get("$field.CATEGORIES");
event[calendars.AFFECTEDUSERS] = vars.get("$field.ATTENDEES");
event[calendars.TRANSPARENCY] = vars.get("$field.TRANSPARENCY");
if (vars.get("$field.REMINDER") != undefined && vars.get("$field.REMINDER") != "")
{
event[calendars.HASREMINDER] = "true";
event[calendars.REMINDER_DURATION] = vars.get("$field.REMINDER");
}
//event[calendars.AFFECTEDUSERS] = getAffectedUsers( event );
// calcrecurrence(event);
// if (event[calendars.RRULE] != undefined) recurrencend(event);
// Links updaten
//swing.saveTableEdit("$comp.links");
// Entweder jetzt neu anlegen oder nur updaten
calendars.updateEntry(event);
ok = true;
}
}
// Liefert die AffectedUsers
function getAffectedUsers( pEvent )
{
var affectedusers = vars.get("$image.affectedusers");
var attendess = pEvent[calendars.ATTENDEES]
var calendarusers = [];
for ( var i = 0; i < affectedusers.length; i++)
{
var insert = true;
for ( var y = 0; y < attendess.length; y++)
{
// Teilnehmer schon vorhanden
if ( text.encodeMS( [attendess[y]["paramvalue"], "CN:" + attendess[y]["cn"]] ) == affectedusers[i][0] )
{
var userparts = [attendess[y]["paramvalue"]];
if ( affectedusers[i][1] != "" && affectedusers[i][1] != "UNKNOWN" ) attendess[y]["partstat"] = affectedusers[i][1];
for ( var part in attendess[y] ) if ( part != "paramvalue") userparts.push(part + ":" + attendess[y][part] )
calendarusers.push( text.encodeMS(userparts) );
insert = false;
break;
}
}
if ( insert ) // Teilnehmer noch nicht im Termin vorhanden
{
var resource = db.cell("select THEME from THEME where THEMEID = '" + affectedusers[i][0] + "'");
if( resource != "" && tools.existUsers(resource) )
calendarusers.push(text.encodeMS(text.decodeMS(calendars.getCalendarUser(resource)).concat("CUTYPE:RESOURCE")));
else calendarusers.push(affectedusers[i][0]);
}
}
return text.encodeMS( calendarusers );
}
// Liefert die Benutzer zurück, auf die keine Schreibrechte bestehen
function getReadOnlyUser()
{
var writeable = calendars.getFullCalendarUsers(calendars.RIGHT_WRITE);
var affectedusers = vars.get("$image.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("$comp.rec_end");
// Automatische Erkennung, was gewollt ist
if (rec_end == "")
{
if (vars.get("$comp.rec_end_count") != "")
rec_end = "Endet nach Anzahl Terminen";
else if (vars.get("$comp.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("$comp.rec_end_count"));
}
else if (rec_end == "Endet am")
{
var dat = vars.get("$comp.rec_end_date");
var start = vars.get("$comp.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("$comp.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("$comp.rec_yearly");
var rec_yearly_month = vars.get("$comp.rec_yearly_month");
var rec_yearly_day = vars.get("$comp.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("$comp.rec_yearly_day2") != "" && vars.get("$comp.rec_yearly_number2") != "")
rec_year = "Am #. # im #";
}
if (rec_year == "" || (rec_yearly_month == "" && rec_yearly_day == "" ))
{
question.showMessage(translate.text("Jährliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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("$comp.rec_yearly_month2");
day = vars.get("$comp.rec_yearly_day2");
var number = vars.get("$comp.rec_yearly_number2");
event[calendars.RRULE] = new Array("FREQ=YEARLY;BYMONTH="+month+";BYDAY="+number+day);
}
}
/***********************/
function rec_monthly(event)
{
var rec_month = vars.get("$comp.rec_month");
var rec_monthly_day = vars.get("$comp.rec_monthly_day");
var rec_monthly_interval = vars.get("$comp.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("$comp.rec_monthly_day2") != "" && vars.get("$comp.rec_monthly_interval2") != "" && vars.get("$comp.rec_monthly_weekday2") != "")
rec_month = "Am #. # jeden #. Monat";
}
if (rec_month == "" || (rec_monthly_day == "" && rec_monthly_interval != ""))
{
question.showMessage(translate.text("Monatliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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("$comp.rec_monthly_day2");
interval = vars.get("$comp.rec_monthly_interval2");
var weekday = vars.get("$comp.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("$comp.rec_weekly_intervall");
if (rec_weekly_intervall == "")
rec_weekly_intervall = "1";
var days = new Array();
var count = 0;
if (vars.get("$comp.rec_weekly_mo") == "true")
{
days[count] = "MO";
count++;
}
if (vars.get("$comp.rec_weekly_di") == "true")
{
days[count] = "TU";
count++;
}
if (vars.get("$comp.rec_weekly_mi") == "true")
{
days[count] = "WE";
count++;
}
if (vars.get("$comp.rec_weekly_do") == "true")
{
days[count] = "TH";
count++;
}
if (vars.get("$comp.rec_weekly_fr") == "true")
{
days[count] = "FR";
count++;
}
if (vars.get("$comp.rec_weekly_sa") == "true")
{
days[count] = "SA";
count++;
}
if (vars.get("$comp.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("$comp.rec_dailytype");
var rec_dailydays = vars.get("$comp.rec_daily_days");
if (rec_dailytype == "")
{
if (rec_dailydays != "")
rec_dailytype = "Alle # Tage";
}
if (rec_dailytype == "" || rec_dailydays == "")
{
question.showMessage(translate.text("Tägliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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
import("system.logging");
import("system.result");
import("system.vars");
import("system.calendars");
import("system.datetime");
import("system.eMath");
import("system.util");
// $param.entry is potentially a recurrence exception.
if(vars.exists("$param.entry"))
{
var entry = JSON.parse(vars.getString("$param.entry"));
var masterEntry = null;
if (vars.exists("$param.masterEntry") && vars.get("$param.masterEntry") != "") {
masterEntry = JSON.parse(vars.get("$param.masterEntry"));
}
//logging.log("Appointment is recurrence exception: " + (masterEntry != null))
var uid = entry[calendars.ID];
var summary = entry[calendars.SUMMARY];
var attendees = entry[calendars.AFFECTEDUSERS];
var startdate = entry[calendars.DTSTART];
var enddate = entry[calendars.DTEND];
var links = entry[calendars.LINKS];
var description = entry[calendars.DESCRIPTION];
var organizer = entry[calendars.ORGANIZER2]["paramvalue"];
var status = entry[calendars.STATUS];
var location = entry[calendars.LOCATION];
var reminder = entry[calendars.REMINDER_DURATION];
var remindercheck = entry[calendars.HASREMINDER]
var classification = entry[calendars.CLASSIFICATION];
var transparency = entry[calendars.TRANSPARENCY];
var categories = entry[calendars.CATEGORIES];
var masterBegin = masterEntry != null ? masterEntry[calendars.DTSTART] : null
var masterEnd = masterEntry != null ? masterEntry[calendars.DTEND] : null
// Recurrence
var recurrenceID = entry[calendars.RECURRENCEID];
var rrule = null;
if (masterEntry != null) { // Entry is a recurrence exception, therefore get rrule from master
rrule = masterEntry[calendars.RRULE] != null ? masterEntry[calendars.RRULE][0] : null;
} else {
rrule = entry[calendars.RRULE] != null ? entry[calendars.RRULE][0] : null;
}
//@TODO Icon
result.object([
[
uid,
attendees.length,
startdate,
enddate,
summary,
organizer,
attendees,
status,
links,
description,
location,
'',
classification,
transparency,
categories,
reminder,
remindercheck,
rrule,
recurrenceID,
null,
masterBegin,
masterEnd
]
]);
}
else
{
var filter = ( vars.exists("$param.p_filter")
&& vars.get("$param.p_filter") != null
&& vars.get("$param.p_filter") != undefined) ? vars.get("$param.p_filter") : "";
//For the Tableview in Task_Date
//var events = getEvents(filter);
var cond = {
TYPE_1: calendars.VEVENT
,USER_1: vars.get("$sys.user")
,COUNT: "1"
};
//var entries = calendars.getExpandedEntries(cond, new Long(datetime.date()), new Long(eMath.addInt(datetime.date(), datetime.ONE_DAY * 7)));
//for (i = 0; i < events.length; i++)
//{
// events[i].push([""])
// var count = events[i][3];
// var iconInfo = (count > 1 ? "gruppentermin" : "einzeltermin");
// var icon = (getIcon("termine_aufgaben", iconInfo));
// events[i] = events[i].concat(icon);
//}
//result.object(events);
}
import("system.neon");
import("system.calendars");
import("system.vars");
if (vars.exists("param.entry"))
{
var entry = JSON.parse(vars.getString("param.entry"));
var reccurenceid = entry[calendars.RECURRENCEID];
if (reccurenceid == undefined) reccurenceid = null;
calendars.removeEntryByUID(calendars.VEVENT, vars.get("$sys.user"), entry[calendars.ID], reccurenceid)
}
if(vars.exists("$sys.ancestorimageuid") && vars.get("$sys.ancestorimageuid") != null)
{
neon.closeImage(vars.getString("$sys.currentimage"), true);
neon.refresh(vars.get("$sys.ancestorimageuid"));
}
\ No newline at end of file
import("system.logging");
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");
logging.log("appointment_entity.onInsert");
var event = JSON.parse(vars.getString("param.entry"));
var ok = false;
event[calendars.TYPE] = calendars.VEVENT;
event[calendars.ID] = vars.get("$field.UID");
event[calendars.ATTENDEES] = 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.REMINDER") != undefined && vars.get("$field.REMINDER") != "")
{
event[calendars.HASREMINDER] = "true";
event[calendars.REMINDER_DURATION] = vars.get("$field.REMINDER");
}
event[calendars.ID] = calendars.insert([event])[0];
vars.set("$image.editmode", calendars.MODE_UPDATE);
ok = true;
// Liefert die Benutzer zurück, auf die keine Schreibrechte bestehen
function getReadOnlyUser()
{
var writeable = calendars.getFullCalendarUsers(calendars.RIGHT_WRITE);
var affectedusers = vars.get("$image.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("Jährliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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("Monatliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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("Tägliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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
import("system.neon");
import("system.calendars");
import("system.vars");
import("system.question");
import("system.translate");
import("system.text");
import("system.swing");
import("system.datetime");
import("system.db");
import("system.result");
import("system.tools");
// Dieser Prozess speichert die im Frame angezeigten Daten
// Je nach Modus (INSERT, EDIT) wird ein neuer Datensatz angelegt oder der alte editiert
if(vars.exists("$param.entry"))
{
var event = JSON.parse(vars.getString("$param.entry"));
var ok = false;
if ( calendars.getBackendType() == calendars.BACKEND_EXCHANGEWS && event[calendars.ORGANIZER2]["cn"] != event[calendars.USER2]["cn"])
{
question.showMessage(translate.text("Ein Gruppentermin kann nur durch den Organisator bearbeitet werden."));
ok = true;
}
else
{
event[calendars.ID] = vars.getString("$field.UID");
event[calendars.TYPE] = calendars.VEVENT;
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.HASREMINDER] = "false";
event[calendars.CLASSIFICATION] = vars.get("$field.CLASSIFICATION");
event[calendars.CATEGORIES] = vars.get("$field.CATEGORIES");
event[calendars.AFFECTEDUSERS] = vars.get("$field.ATTENDEES");
event[calendars.TRANSPARENCY] = vars.get("$field.TRANSPARENCY");
if (vars.get("$field.REMINDER") != undefined && vars.get("$field.REMINDER") != "")
{
event[calendars.HASREMINDER] = "true";
event[calendars.REMINDER_DURATION] = vars.get("$field.REMINDER");
}
//event[calendars.AFFECTEDUSERS] = getAffectedUsers( event );
// calcrecurrence(event);
// if (event[calendars.RRULE] != undefined) recurrencend(event);
// Links updaten
//swing.saveTableEdit("$comp.links");
// Entweder jetzt neu anlegen oder nur updaten
calendars.updateEntry(event);
ok = true;
}
}
// Liefert die AffectedUsers
function getAffectedUsers( pEvent )
{
var affectedusers = vars.get("$image.affectedusers");
var attendess = pEvent[calendars.ATTENDEES]
var calendarusers = [];
for ( var i = 0; i < affectedusers.length; i++)
{
var insert = true;
for ( var y = 0; y < attendess.length; y++)
{
// Teilnehmer schon vorhanden
if ( text.encodeMS( [attendess[y]["paramvalue"], "CN:" + attendess[y]["cn"]] ) == affectedusers[i][0] )
{
var userparts = [attendess[y]["paramvalue"]];
if ( affectedusers[i][1] != "" && affectedusers[i][1] != "UNKNOWN" ) attendess[y]["partstat"] = affectedusers[i][1];
for ( var part in attendess[y] ) if ( part != "paramvalue") userparts.push(part + ":" + attendess[y][part] )
calendarusers.push( text.encodeMS(userparts) );
insert = false;
break;
}
}
if ( insert ) // Teilnehmer noch nicht im Termin vorhanden
{
var resource = db.cell("select THEME from THEME where THEMEID = '" + affectedusers[i][0] + "'");
if( resource != "" && tools.existUsers(resource) )
calendarusers.push(text.encodeMS(text.decodeMS(calendars.getCalendarUser(resource)).concat("CUTYPE:RESOURCE")));
else calendarusers.push(affectedusers[i][0]);
}
}
return text.encodeMS( calendarusers );
}
// Liefert die Benutzer zurück, auf die keine Schreibrechte bestehen
function getReadOnlyUser()
{
var writeable = calendars.getFullCalendarUsers(calendars.RIGHT_WRITE);
var affectedusers = vars.get("$image.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("$comp.rec_end");
// Automatische Erkennung, was gewollt ist
if (rec_end == "")
{
if (vars.get("$comp.rec_end_count") != "")
rec_end = "Endet nach Anzahl Terminen";
else if (vars.get("$comp.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("$comp.rec_end_count"));
}
else if (rec_end == "Endet am")
{
var dat = vars.get("$comp.rec_end_date");
var start = vars.get("$comp.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("$comp.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("$comp.rec_yearly");
var rec_yearly_month = vars.get("$comp.rec_yearly_month");
var rec_yearly_day = vars.get("$comp.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("$comp.rec_yearly_day2") != "" && vars.get("$comp.rec_yearly_number2") != "")
rec_year = "Am #. # im #";
}
if (rec_year == "" || (rec_yearly_month == "" && rec_yearly_day == "" ))
{
question.showMessage(translate.text("Jährliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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("$comp.rec_yearly_month2");
day = vars.get("$comp.rec_yearly_day2");
var number = vars.get("$comp.rec_yearly_number2");
event[calendars.RRULE] = new Array("FREQ=YEARLY;BYMONTH="+month+";BYDAY="+number+day);
}
}
/***********************/
function rec_monthly(event)
{
var rec_month = vars.get("$comp.rec_month");
var rec_monthly_day = vars.get("$comp.rec_monthly_day");
var rec_monthly_interval = vars.get("$comp.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("$comp.rec_monthly_day2") != "" && vars.get("$comp.rec_monthly_interval2") != "" && vars.get("$comp.rec_monthly_weekday2") != "")
rec_month = "Am #. # jeden #. Monat";
}
if (rec_month == "" || (rec_monthly_day == "" && rec_monthly_interval != ""))
{
question.showMessage(translate.text("Monatliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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("$comp.rec_monthly_day2");
interval = vars.get("$comp.rec_monthly_interval2");
var weekday = vars.get("$comp.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("$comp.rec_weekly_intervall");
if (rec_weekly_intervall == "")
rec_weekly_intervall = "1";
var days = new Array();
var count = 0;
if (vars.get("$comp.rec_weekly_mo") == "true")
{
days[count] = "MO";
count++;
}
if (vars.get("$comp.rec_weekly_di") == "true")
{
days[count] = "TU";
count++;
}
if (vars.get("$comp.rec_weekly_mi") == "true")
{
days[count] = "WE";
count++;
}
if (vars.get("$comp.rec_weekly_do") == "true")
{
days[count] = "TH";
count++;
}
if (vars.get("$comp.rec_weekly_fr") == "true")
{
days[count] = "FR";
count++;
}
if (vars.get("$comp.rec_weekly_sa") == "true")
{
days[count] = "SA";
count++;
}
if (vars.get("$comp.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("$comp.rec_dailytype");
var rec_dailydays = vars.get("$comp.rec_daily_days");
if (rec_dailytype == "")
{
if (rec_dailydays != "")
rec_dailytype = "Alle # Tage";
}
if (rec_dailytype == "" || rec_dailydays == "")
{
question.showMessage(translate.text("Tägliche Serie nicht genauer spezifiziert. Ignoriere Serie."));
}
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