Bug 994200 - Changing calendar in event dialog may cause an inappropriate organizer/attendee set. r+a=philipp
authorMakeMyDay <makemyday@gmx-topmail.de>
Wed, 09 Apr 2014 19:52:52 +0200
changeset 16099 83644ae8e82bad0bdbd4b89ce9eb0fe598b21f52
parent 16098 fa9e1c8817a2f9218eff74fc7109466ac2d7285a
child 16100 c74538a5f31014d3d96af42b9d8f9aebfe663aa0
child 16102 698700f51ebf6f2eb9bfc0cd73aa95b52500cdcf
push id54
push userryanvm@gmail.com
push dateWed, 23 Apr 2014 13:00:46 +0000
bugs994200
Bug 994200 - Changing calendar in event dialog may cause an inappropriate organizer/attendee set. r+a=philipp CLOSED TREE
calendar/base/content/dialogs/calendar-event-dialog.js
--- a/calendar/base/content/dialogs/calendar-event-dialog.js
+++ b/calendar/base/content/dialogs/calendar-event-dialog.js
@@ -28,16 +28,17 @@ var gPrivacy = null;
 var gAttachMap = {};
 var gPriority = 0;
 var gStatus = "NONE";
 var gConfirmCancel = true;
 var gLastRepeatSelection = 0;
 var gIgnoreUpdate = false;
 var gShowTimeAs = null;
 var gWarning = false;
+var gPreviousCalendarId = null;
 
 var eventDialogQuitObserver = {
   observe: function(aSubject, aTopic, aData) {
     // Check whether or not we want to veto the quit request (unless another
     // observer already did.
     if (aTopic == "quit-application-requested" &&
         (aSubject instanceof Components.interfaces.nsISupportsPRBool) &&
         !aSubject.data)
@@ -2143,22 +2144,27 @@ function attachmentLinkClicked(event) {
  * Update the dialog controls related related to the item's calendar.
  */
 function updateCalendar() {
     let item = window.calendarItem;
     let calendar = getCurrentCalendar();
 
     gIsReadOnly = calendar.readOnly;
 
+    if (!gPreviousCalendarId) {
+        gPreviousCalendarId = item.calendar.id;
+    }
+
     // We might have to change the organizer, let's see
     let calendarOrgId = calendar.getProperty("organizerId");
-    if (window.organizer && calendar.aclEntry && calendarOrgId &&
-        calendar.id != item.calendar.id) {
+    if (window.organizer && calendarOrgId &&
+        calendar.id != gPreviousCalendarId) {
         window.organizer.id = calendarOrgId;
         window.organizer.commonName = calendar.getProperty("organizerCN");
+        gPreviousCalendarId = calendar.id;
     }
 
     if (!canNotifyAttendees(calendar, item) && calendar.getProperty("imip.identity")) {
         enableElement("notify-attendees-checkbox");
     } else {
         disableElement("notify-attendees-checkbox");
     }