diff --git a/UI/Scheduler/UIxCalendarSelector.m b/UI/Scheduler/UIxCalendarSelector.m index e60fb6e13..1e49c8e24 100644 --- a/UI/Scheduler/UIxCalendarSelector.m +++ b/UI/Scheduler/UIxCalendarSelector.m @@ -25,6 +25,9 @@ #import #import + +#import + #import #import @@ -102,23 +105,26 @@ colorForNumber (unsigned int number) - (NSArray *) calendars { - NSArray *folders; + NSArray *folders, *roles; SOGoAppointmentFolders *co; SOGoAppointmentFolder *folder; NSMutableDictionary *calendar; unsigned int count, max; NSString *folderName, *fDisplayName; NSNumber *isActive; + SOGoUser *user; if (!calendars) { co = [self clientObject]; + user = [[self context] activeUser]; folders = [co subFolders]; max = [folders count]; calendars = [[NSMutableArray alloc] initWithCapacity: max]; for (count = 0; count < max; count++) { folder = [folders objectAtIndex: count]; + roles = [user rolesForObject: folder inContext: [self context]]; calendar = [NSMutableDictionary dictionary]; folderName = [folder nameInContainer]; fDisplayName = [folder displayName]; @@ -134,6 +140,8 @@ colorForNumber (unsigned int number) [calendar setObject: isActive forKey: @"active"]; [calendar setObject: [folder ownerInContext: context] forKey: @"owner"]; + [calendar setObject: [roles componentsJoinedByString: @","] + forKey: @"roles"]; [calendars addObject: calendar]; } } diff --git a/UI/Templates/SchedulerUI/UIxCalendarSelector.wox b/UI/Templates/SchedulerUI/UIxCalendarSelector.wox index eac42da1c..a02893ffa 100644 --- a/UI/Templates/SchedulerUI/UIxCalendarSelector.wox +++ b/UI/Templates/SchedulerUI/UIxCalendarSelector.wox @@ -32,7 +32,7 @@ div.colorBox.calendarFolder
  • + var:owner="currentCalendar.owner" var:roles="currentCalendar.roles" > diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 3f3885394..05ded9b27 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -31,7 +31,11 @@ function newEvent(sender, type) { var hour = sender.hour; if (!hour) hour = sender.getAttribute("hour"); - var folderID = getSelectedFolder(); + var folder = getSelectedFolder(); + var roles = folder.getAttribute("roles").split(","); + var folderID = folder.getAttribute("id"); + if ($(roles).indexOf("PublicModifier") < 0) + folderID = "/personal"; var urlstr = ApplicationBaseURL + folderID + "/new" + type; var params = new Array(); if (day) @@ -48,12 +52,12 @@ function newEvent(sender, type) { function getSelectedFolder() { var folder; - - var nodes = $("calendarList").getSelectedRows(); + var list = $("calendarList"); + var nodes = list.getSelectedRows(); if (nodes.length > 0) - folder = nodes[0].getAttribute("id"); + folder = nodes[0]; else - folder = "/personal"; + folder = list.down("li"); return folder; } diff --git a/UI/WebServerResources/UIxAppointmentEditor.css b/UI/WebServerResources/UIxAppointmentEditor.css index 3bef05010..b02026e58 100644 --- a/UI/WebServerResources/UIxAppointmentEditor.css +++ b/UI/WebServerResources/UIxAppointmentEditor.css @@ -90,7 +90,7 @@ TEXTAREA padding-bottom: 0em; } SELECT#calendarList -{ width: 7em; } +{ width: 18em; } A#changeUrlButton { margin-left: 1em; } diff --git a/UI/WebServerResources/UIxComponentEditor.js b/UI/WebServerResources/UIxComponentEditor.js index 8aa9c1124..6ff4d3f00 100644 --- a/UI/WebServerResources/UIxComponentEditor.js +++ b/UI/WebServerResources/UIxComponentEditor.js @@ -149,18 +149,7 @@ function onComponentEditorLoad(event) { Event.observe(list, "mousedown", onChangeCalendar.bindAsEventListener(list), false); - if (document.createEvent) { - var onSelectionChangeEvent; - if (isSafari()) - onSelectionChangeEvent = document.createEvent("UIEvents"); - else - onSelectionChangeEvent = document.createEvent("Events"); - onSelectionChangeEvent.initEvent("mousedown", false, false); - list.dispatchEvent(onSelectionChangeEvent); - } - else { - list.fireEvent("onmousedown"); // IE - } + list.fire("mousedown"); var menuItems = $("itemPrivacyList").childNodesWithTag("li"); for (var i = 0; i < menuItems.length; i++) diff --git a/UI/WebServerResources/generic.css b/UI/WebServerResources/generic.css index c9a2ca833..512a750e3 100644 --- a/UI/WebServerResources/generic.css +++ b/UI/WebServerResources/generic.css @@ -602,7 +602,7 @@ TR._selected > TD, TD._selected { background-color: #4b6983; - color: #000 !important; + color: #fff; } LI[class~="_selected"].denied diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index 8150991ee..4c710b37c 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -525,18 +525,7 @@ function onRowClick(event) { var parentNode = node.parentNode; if (parentNode.tagName == 'TBODY') parentNode = parentNode.parentNode; - if (document.createEvent) { - var onSelectionChangeEvent; - if (isSafari()) - onSelectionChangeEvent = document.createEvent("UIEvents"); - else - onSelectionChangeEvent = document.createEvent("Events"); - onSelectionChangeEvent.initEvent("mousedown", true, true); - parentNode.dispatchEvent(onSelectionChangeEvent); - } - else if (document.createEventObject) { - parentNode.fireEvent("onmousedown"); - } + parentNode.fire("mousedown"); } } lastClickedRow = rowIndex;