예제 #1
0
        protected void BuildCalendarInfobar()
        {
            string queryStringParameter = Utilities.GetQueryStringParameter(base.Request, "clr", false);

            if (queryStringParameter == null)
            {
                return;
            }
            CalendarUtilities.BuildCalendarInfobar(this.infobar, base.UserContext, this.FolderId ?? base.UserContext.CalendarFolderOwaId, CalendarColorManager.ParseColorIndexString(queryStringParameter, true), true);
        }
예제 #2
0
        // Token: 0x0600291D RID: 10525 RVA: 0x000E8E90 File Offset: 0x000E7090
        protected void BuildCalendarInfobar()
        {
            if (base.IsPreviewForm || base.IsEmbeddedItem)
            {
                return;
            }
            string queryStringParameter = Utilities.GetQueryStringParameter(base.Request, "clr", false);

            if (queryStringParameter == null)
            {
                return;
            }
            CalendarUtilities.BuildCalendarInfobar(this.meetingPageWriter.FormInfobar, base.UserContext, base.ParentFolderId, CalendarColorManager.ParseColorIndexString(queryStringParameter, true), false);
        }
예제 #3
0
 // Token: 0x06002918 RID: 10520 RVA: 0x000E8C7C File Offset: 0x000E6E7C
 private void GetPrincipalCalendarFolderId()
 {
     try
     {
         this.principalCalendarFolderId = this.meetingPageWriter.GetPrincipalCalendarFolderId(this.isCalendarItem);
     }
     catch (OwaSharedFromOlderVersionException)
     {
         this.sharedFromOlderVersion = true;
         if (base.Item is MeetingMessage)
         {
             CalendarUtilities.GetReceiverGSCalendarIdStringAndDisplayName(base.UserContext, (MeetingMessage)base.Item, out this.principalCalendarFolderId, out this.receiverDisplayName);
         }
     }
 }
예제 #4
0
        // Token: 0x06002FDB RID: 12251 RVA: 0x00117464 File Offset: 0x00115664
        public static ExDateTime[] GetViewDays(UserContext userContext, ExDateTime[] days, CalendarViewType viewType, OwaStoreObjectId folderId, FolderViewStates viewStates)
        {
            ExDateTime exDateTime = (days == null || days.Length == 0) ? DateTimeUtilities.GetLocalTime().Date : days[0];

            switch (viewType)
            {
            case CalendarViewType.Min:
                if (days == null || days.Length == 0)
                {
                    int dailyViewDays = viewStates.DailyViewDays;
                    days = new ExDateTime[dailyViewDays];
                    for (int i = 0; i < dailyViewDays; i++)
                    {
                        days[i]    = exDateTime;
                        exDateTime = exDateTime.IncrementDays(1);
                    }
                }
                break;

            case CalendarViewType.Weekly:
                days = DateTimeUtilities.GetWeekFromDay(exDateTime, userContext.UserOptions.WeekStartDay, 0, false);
                break;

            case CalendarViewType.WorkWeek:
                days = DateTimeUtilities.GetWeekFromDay(exDateTime, userContext.UserOptions.WeekStartDay, CalendarUtilities.GetWorkDays(userContext, folderId), true);
                break;

            case CalendarViewType.Monthly:
                days = CalendarUtilities.GetViewDaysForMonthlyView(userContext, exDateTime);
                break;

            case CalendarViewType.WeeklyAgenda:
            case CalendarViewType.WorkWeeklyAgenda:
            {
                ExDateTime firstDay = CalendarUtilities.GetWeekDays(folderId, userContext, exDateTime, false)[0];
                int        workDays = CalendarUtilities.GetWorkDays(userContext, folderId);
                days = CalendarUtilities.GetViewDaysForWeeklyAgenda(workDays, firstDay, viewType == CalendarViewType.WorkWeeklyAgenda);
                break;
            }
            }
            return(days);
        }
예제 #5
0
 internal void BuildInfobar(Infobar infobar)
 {
     if (this.IsPhishingItemWithEnabledLinks())
     {
         string s = "<a id=\"aIbBlk\" href=\"#\" " + string.Format(CultureInfo.InvariantCulture, ">{0}</a> {1} ", new object[]
         {
             LocalizedStrings.GetHtmlEncoded(-672110188),
             LocalizedStrings.GetHtmlEncoded(-1020475744)
         });
         string s2 = string.Format(CultureInfo.InvariantCulture, "<a href=\"#\" " + Utilities.GetScriptHandler("onclick", "opnHlp(\"" + Utilities.JavascriptEncode(Utilities.BuildEhcHref(HelpIdsLight.EmailSafetyLight.ToString())) + "\");") + ">{0}</a>", new object[]
         {
             LocalizedStrings.GetHtmlEncoded(338562664)
         });
         infobar.AddMessage(SanitizedHtmlString.Format("{0}{1}{2}", new object[]
         {
             LocalizedStrings.GetNonEncoded(1581910613),
             SanitizedHtmlString.GetSanitizedStringWithoutEncoding(s),
             SanitizedHtmlString.GetSanitizedStringWithoutEncoding(s2)
         }), InfobarMessageType.Phishing);
     }
     if (this.isDelegated)
     {
         infobar.AddMessage(SanitizedHtmlString.Format(LocalizedStrings.GetHtmlEncoded(-1205864060), new object[]
         {
             MeetingUtilities.GetReceivedOnBehalfOfDisplayName(this.meetingRequest)
         }), InfobarMessageType.Informational);
     }
     if (this.meetingRequest.MeetingRequestType == MeetingMessageType.PrincipalWantsCopy)
     {
         infobar.AddMessage(SanitizedHtmlString.FromStringId(-332743944), InfobarMessageType.Informational);
     }
     if (!this.IsDraft && this.meetingRequest.MeetingRequestType != MeetingMessageType.Outdated && this.CalendarItemBase != null)
     {
         CalendarUtilities.AddCalendarInfobarMessages(infobar, this.CalendarItemBase, this.meetingRequest, this.UserContext);
     }
     if (this.infobarResponseString != null)
     {
         infobar.AddMessage(this.infobarResponseString.Value, InfobarMessageType.Informational);
     }
 }
예제 #6
0
 // Token: 0x06002FD2 RID: 12242 RVA: 0x00116930 File Offset: 0x00114B30
 private static void GetConflictingAppointments(Infobar infobar, CalendarItemBase calendarItemBase, UserContext userContext)
 {
     if (Utilities.IsPublic(calendarItemBase))
     {
         return;
     }
     using (CalendarFolder calendarFolder = CalendarFolder.Bind(calendarItemBase.Session as MailboxSession, DefaultFolderType.Calendar))
     {
         AdjacencyOrConflictInfo[] adjacentOrConflictingItems = calendarFolder.GetAdjacentOrConflictingItems(calendarItemBase);
         if (adjacentOrConflictingItems != null && adjacentOrConflictingItems.Length != 0)
         {
             if (Utilities.IsOtherMailbox(calendarItemBase))
             {
                 CalendarUtilities.AddConflictingAppointmentsInfobarMessage(infobar, adjacentOrConflictingItems, userContext, calendarItemBase.CalendarItemType, Utilities.GetMailboxOwnerDisplayName((MailboxSession)calendarItemBase.Session), OwaStoreObjectId.CreateFromStoreObject(calendarFolder));
             }
             else
             {
                 CalendarUtilities.AddConflictingAppointmentsInfobarMessage(infobar, adjacentOrConflictingItems, userContext, calendarItemBase.CalendarItemType);
             }
         }
     }
 }
예제 #7
0
        public void GetWebCalendarUrl()
        {
            OwaStoreObjectId owaStoreObjectId = (OwaStoreObjectId)base.GetParameter("Id");

            if (owaStoreObjectId.IsGSCalendar)
            {
                throw new OwaInvalidRequestException("Cannot pass GS Calendar folder id");
            }
            MailboxSession mailboxSession = base.UserContext.MailboxSession;
            StoreObjectId  storeObjectId  = owaStoreObjectId.StoreObjectId;
            string         value          = null;

            if (mailboxSession != null && storeObjectId != null)
            {
                value = CalendarUtilities.GetWebCalendarUrl(mailboxSession, storeObjectId);
            }
            if (string.IsNullOrEmpty(value))
            {
                throw new OwaInvalidRequestException("The requested folder does not have web calendar url");
            }
            this.Writer.Write(value);
        }
예제 #8
0
        // Token: 0x06002FDA RID: 12250 RVA: 0x0011739C File Offset: 0x0011559C
        public static ExDateTime[] GetViewDaysForPublishedView(ISessionContext sessionContext, ExDateTime[] days, CalendarViewType viewType)
        {
            ExDateTime exDateTime = (days == null || days.Length == 0) ? DateTimeUtilities.GetLocalTime().Date : days[0];

            switch (viewType)
            {
            case CalendarViewType.Min:
                if (days == null || days.Length == 0)
                {
                    days = new ExDateTime[]
                    {
                        exDateTime
                    };
                }
                break;

            case CalendarViewType.Weekly:
            case CalendarViewType.WorkWeek:
                days = DateTimeUtilities.GetWeekFromDay(exDateTime, sessionContext.WeekStartDay, 62, viewType == CalendarViewType.WorkWeek);
                break;

            case CalendarViewType.Monthly:
                days = CalendarUtilities.GetViewDaysForMonthlyView(sessionContext, exDateTime);
                break;

            case CalendarViewType.WeeklyAgenda:
            case CalendarViewType.WorkWeeklyAgenda:
            {
                bool       flag     = viewType == CalendarViewType.WorkWeeklyAgenda;
                ExDateTime firstDay = DateTimeUtilities.GetWeekFromDay(exDateTime, sessionContext.WeekStartDay, 62, flag)[0];
                days = CalendarUtilities.GetViewDaysForWeeklyAgenda(62, firstDay, flag);
                break;
            }
            }
            return(days);
        }
예제 #9
0
 // Token: 0x06002FD3 RID: 12243 RVA: 0x001169C4 File Offset: 0x00114BC4
 private static void AddConflictingAppointmentsInfobarMessage(Infobar infobar, AdjacencyOrConflictInfo[] adjacencyOrConflictInfo, UserContext userContext, CalendarItemType calendarItemType)
 {
     CalendarUtilities.AddConflictingAppointmentsInfobarMessage(infobar, adjacencyOrConflictInfo, userContext, calendarItemType, null, null);
 }
예제 #10
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.infobar.SetInfobarClass("infobarEdit");
            this.infobar.SetShouldHonorHideByDefault(true);
            this.calendarItemBase = base.Initialize <CalendarItemBase>(false, new PropertyDefinition[]
            {
                CalendarItemBaseSchema.CalendarItemType,
                StoreObjectSchema.EffectiveRights
            });
            if (this.calendarItemBase != null)
            {
                if (string.Equals(base.OwaContext.FormsRegistryContext.Action, "Open", StringComparison.OrdinalIgnoreCase))
                {
                    this.newItemType = NewItemType.ExplicitDraft;
                }
                else
                {
                    this.newItemType         = NewItemType.ImplicitDraft;
                    base.DeleteExistingDraft = true;
                }
            }
            else
            {
                this.calendarItemBase = Utilities.CreateDraftMeetingRequestFromQueryString(base.UserContext, base.Request, new PropertyDefinition[]
                {
                    StoreObjectSchema.EffectiveRights
                });
                if (this.calendarItemBase != null)
                {
                    this.newItemType         = NewItemType.ImplicitDraft;
                    base.DeleteExistingDraft = true;
                    base.Item = this.calendarItemBase;
                }
            }
            if (this.calendarItemBase != null)
            {
                this.isMeeting = this.calendarItemBase.IsMeeting;
                this.startTime = this.calendarItemBase.StartTime;
                this.endTime   = this.calendarItemBase.EndTime;
                if (this.calendarItemBase.IsAllDayEvent && !this.IsRecurringMaster)
                {
                    this.endTime = this.endTime.IncrementDays(-1);
                }
                this.recipientWell       = new CalendarItemRecipientWell(this.calendarItemBase);
                this.bodyMarkup          = BodyConversionUtilities.GetBodyFormatOfEditItem(this.calendarItemBase, this.newItemType, base.UserContext.UserOptions);
                this.toolbar             = new EditCalendarItemToolbar(this.calendarItemBase, this.isMeeting, this.bodyMarkup, this.IsPublicItem);
                this.toolbar.ToolbarType = (base.IsPreviewForm ? ToolbarType.Preview : ToolbarType.Form);
                this.isBeingCanceled     = (Utilities.GetQueryStringParameter(base.Request, "c", false) != null);
                string queryStringParameter = Utilities.GetQueryStringParameter(base.Request, "er", false);
                if (queryStringParameter != null)
                {
                    if (this.calendarItemBase.CalendarItemType != CalendarItemType.RecurringMaster || !(this.calendarItemBase is CalendarItem))
                    {
                        throw new OwaInvalidRequestException("Invalid calendar item type.  Only recurring masters support specifying an end range");
                    }
                    this.endRange = ExDateTime.MinValue;
                    try
                    {
                        this.endRange = DateTimeUtilities.ParseIsoDate(queryStringParameter, base.UserContext.TimeZone);
                    }
                    catch (OwaParsingErrorException)
                    {
                        ExTraceGlobals.CalendarDataTracer.TraceDebug <string>((long)this.GetHashCode(), "Invalid end range provided on URL '{0}'", queryStringParameter);
                        throw new OwaInvalidRequestException(string.Format("Invalid end range provided on URL '{0}'", queryStringParameter));
                    }
                    if (this.endRange != ExDateTime.MinValue)
                    {
                        CalendarItem calendarItem = (CalendarItem)this.calendarItemBase;
                        this.occurrenceCount = MeetingUtilities.CancelRecurrence(calendarItem, this.endRange);
                        if (this.occurrenceCount == 0)
                        {
                            this.isBeingCanceled = true;
                        }
                    }
                }
                string queryStringParameter2 = Utilities.GetQueryStringParameter(base.Request, "od", false);
                if (queryStringParameter2 != null)
                {
                    try
                    {
                        this.occurrenceDate = DateTimeUtilities.ParseIsoDate(queryStringParameter2, base.UserContext.TimeZone).Date;
                        goto IL_303;
                    }
                    catch (OwaParsingErrorException)
                    {
                        ExTraceGlobals.CalendarDataTracer.TraceDebug <string>((long)this.GetHashCode(), "Invalid occurrence date specified on URL '{0}'", queryStringParameter2);
                        throw new OwaInvalidRequestException(string.Format("Invalid occurrence date provided on URL '{0}'", queryStringParameter2));
                    }
                }
                this.occurrenceDate = DateTimeUtilities.GetLocalTime().Date;
IL_303:
                CalendarUtilities.AddCalendarInfobarMessages(this.infobar, this.calendarItemBase, null, base.UserContext);
                if (this.isBeingCanceled)
                {
                    this.infobar.AddMessage(SanitizedHtmlString.FromStringId(1328030972), InfobarMessageType.Informational);
                }
                this.disableOccurrenceReminderUI = MeetingUtilities.CheckShouldDisableOccurrenceReminderUI(this.calendarItemBase);
                if (this.disableOccurrenceReminderUI && !this.IsPublicItem)
                {
                    this.infobar.AddMessage(SanitizedHtmlString.FromStringId(-891369593), InfobarMessageType.Informational);
                }
                if (!(this.calendarItemBase is CalendarItem))
                {
                    this.recurrenceUtilities = new RecurrenceUtilities(null, base.SanitizingResponse);
                    return;
                }
                if (0 < this.occurrenceCount)
                {
                    EndDateRecurrenceRange range = new EndDateRecurrenceRange(((CalendarItem)this.calendarItemBase).Recurrence.Range.StartDate, this.endRange.IncrementDays(-1));
                    this.recurrenceUtilities = new RecurrenceUtilities(new Recurrence(((CalendarItem)this.calendarItemBase).Recurrence.Pattern, range), base.SanitizingResponse);
                    return;
                }
                this.recurrenceUtilities = new RecurrenceUtilities(((CalendarItem)this.calendarItemBase).Recurrence, base.SanitizingResponse);
                return;
            }
            else
            {
                this.isMeeting = (Utilities.GetQueryStringParameter(base.Request, "mr", false) != null);
                if (this.isMeeting && this.IsPublicItem)
                {
                    throw new OwaInvalidRequestException("Can't create meeting in Owa Public Folders");
                }
                this.isAllDayEvent = (Utilities.GetQueryStringParameter(base.Request, "evt", false) != null);
                bool   flag = Utilities.GetQueryStringParameter(base.Request, "tm", false) != null || this.isAllDayEvent;
                string queryStringParameter3 = Utilities.GetQueryStringParameter(base.Request, "st", false);
                if (queryStringParameter3 != null)
                {
                    try
                    {
                        this.startTime = DateTimeUtilities.ParseIsoDate(queryStringParameter3, base.UserContext.TimeZone);
                    }
                    catch (OwaParsingErrorException)
                    {
                        ExTraceGlobals.CalendarDataTracer.TraceDebug <string>((long)this.GetHashCode(), "Invalid start date provided on URL '{0}'", queryStringParameter3);
                        throw new OwaInvalidRequestException(string.Format("Invalid start date provided on URL '{0}'", queryStringParameter3));
                    }
                }
                if (flag || this.startTime == ExDateTime.MinValue)
                {
                    ExDateTime localTime = DateTimeUtilities.GetLocalTime();
                    if (this.startTime == ExDateTime.MinValue)
                    {
                        this.startTime = new ExDateTime(base.UserContext.TimeZone, localTime.Year, localTime.Month, localTime.Day, localTime.Hour, localTime.Minute, 0);
                    }
                    else
                    {
                        this.startTime = new ExDateTime(base.UserContext.TimeZone, this.startTime.Year, this.startTime.Month, this.startTime.Day, localTime.Hour, localTime.Minute, 0);
                    }
                    if (this.isAllDayEvent && this.startTime.Hour == 23)
                    {
                        if (this.startTime.Minute >= 30)
                        {
                            this.startTime = this.startTime.Date;
                        }
                        else
                        {
                            this.startTime = new ExDateTime(base.UserContext.TimeZone, this.startTime.Year, this.startTime.Month, this.startTime.Day, 23, 0, 0);
                            this.endTime   = new ExDateTime(base.UserContext.TimeZone, this.startTime.Year, this.startTime.Month, this.startTime.Day, 23, 30, 0);
                        }
                    }
                    else if (this.startTime.Minute != 0 && this.startTime.Minute != 30)
                    {
                        this.startTime = this.startTime.AddMinutes((double)(30 - this.startTime.Minute % 30));
                    }
                }
                if (this.endTime == ExDateTime.MinValue)
                {
                    this.endTime = this.startTime.AddMinutes(60.0);
                }
                this.recipientWell       = new CalendarItemRecipientWell();
                this.bodyMarkup          = base.UserContext.UserOptions.ComposeMarkup;
                this.toolbar             = new EditCalendarItemToolbar(null, this.isMeeting, this.bodyMarkup, this.IsPublicItem);
                this.toolbar.ToolbarType = (base.IsPreviewForm ? ToolbarType.Preview : ToolbarType.Form);
                this.recurrenceUtilities = new RecurrenceUtilities(null, base.SanitizingResponse);
                return;
            }
        }
예제 #11
0
        private void RenderPayload(params OwaStoreObjectId[] folderIds)
        {
            ExTraceGlobals.CalendarCallTracer.TraceDebug((long)this.GetHashCode(), "CalendarViewEventHandler.RenderPayload");
            ExDateTime[] array = (ExDateTime[])base.GetParameter("days");
            int          num   = folderIds.Length;

            if (num > 5)
            {
                throw new OwaInvalidRequestException("Too many folders");
            }
            if (num <= 0)
            {
                throw new OwaInvalidRequestException("Must pass at least one folder");
            }
            if (array == null)
            {
                array = new ExDateTime[]
                {
                    DateTimeUtilities.GetLocalTime().Date
                };
            }
            if (array.Length == 0)
            {
                throw new OwaInvalidRequestException("Empty days array is not allowed");
            }
            ReadingPanePosition requestReadingPanePosition = Microsoft.Exchange.Clients.Owa.Core.ReadingPanePosition.Min;

            if (base.IsParameterSet("srp"))
            {
                requestReadingPanePosition = (((bool)base.GetParameter("srp")) ? Microsoft.Exchange.Clients.Owa.Core.ReadingPanePosition.Right : Microsoft.Exchange.Clients.Owa.Core.ReadingPanePosition.Off);
            }
            bool flag = false;

            if (base.IsParameterSet("nvs"))
            {
                flag = (bool)base.GetParameter("nvs");
            }
            CalendarViewType viewType = (CalendarViewType)base.GetParameter("vt");

            using (CalendarAdapterCollection calendarAdapterCollection = new CalendarAdapterCollection(base.UserContext, folderIds, viewType))
            {
                int num2 = 0;
                if (base.IsParameterSet("dir"))
                {
                    num2 = (int)base.GetParameter("dir");
                }
                if (num2 != 0)
                {
                    CalendarViewEventHandler.MoveDates(array, calendarAdapterCollection.ViewType, num2);
                }
                array = CalendarUtilities.GetViewDays(base.UserContext, array, calendarAdapterCollection.ViewType, calendarAdapterCollection.PropertyFolderId, calendarAdapterCollection.FolderViewStates);
                this.ValidateDays(array, calendarAdapterCollection.ViewType, num2);
                CalendarAdapter[]         adapters = calendarAdapterCollection.GetAdapters(array, true);
                CalendarViewPayloadWriter calendarViewPayloadWriter;
                if (calendarAdapterCollection.ViewType == CalendarViewType.Monthly)
                {
                    calendarViewPayloadWriter = new MonthlyViewPayloadWriter(base.UserContext, this.Writer, array, adapters);
                }
                else
                {
                    calendarViewPayloadWriter = new DailyViewPayloadWriter(base.UserContext, this.Writer, array, adapters);
                }
                base.ResponseContentType = OwaEventContentType.Javascript;
                calendarViewPayloadWriter.Render(calendarAdapterCollection.ViewWidth, calendarAdapterCollection.ViewType, calendarAdapterCollection.ReadingPanePosition, requestReadingPanePosition);
                if (!flag)
                {
                    calendarAdapterCollection.SaveViewStates(array);
                }
            }
            if (Globals.ArePerfCountersEnabled)
            {
                OwaSingleCounters.CalendarViewsRefreshed.Increment();
            }
        }
예제 #12
0
 protected void RenderBusyTypeDropdownList()
 {
     CalendarUtilities.RenderBusyTypeDropdownList(base.SanitizingResponse, this.calendarItemBase, false);
 }
예제 #13
0
        // Token: 0x06002FD0 RID: 12240 RVA: 0x00116600 File Offset: 0x00114800
        public static void AddCalendarInfobarMessages(Infobar infobar, CalendarItemBase calendarItemBase, MeetingMessage meetingMessage, UserContext userContext)
        {
            if (infobar == null)
            {
                throw new ArgumentNullException("infobar");
            }
            if (calendarItemBase == null)
            {
                throw new ArgumentNullException("calendarItemBase");
            }
            if (userContext == null)
            {
                throw new ArgumentNullException("userContext");
            }
            bool       flag      = calendarItemBase.IsOrganizer() && calendarItemBase.IsMeeting;
            ExDateTime localTime = DateTimeUtilities.GetLocalTime();
            bool       flag2     = false;

            if (calendarItemBase.IsMeeting && calendarItemBase.IsCancelled)
            {
                infobar.AddMessage(-161808760, InfobarMessageType.Informational);
            }
            if (calendarItemBase.CalendarItemType == CalendarItemType.RecurringMaster)
            {
                CalendarItem calendarItem = (CalendarItem)calendarItemBase;
                if (calendarItem.Recurrence != null && !(calendarItem.Recurrence.Range is NoEndRecurrenceRange))
                {
                    OccurrenceInfo lastOccurrence = calendarItem.Recurrence.GetLastOccurrence();
                    if (lastOccurrence != null && lastOccurrence.EndTime < localTime)
                    {
                        infobar.AddMessage(-2124392108, InfobarMessageType.Informational);
                        flag2 = true;
                    }
                }
            }
            else if (calendarItemBase.EndTime < localTime)
            {
                flag2 = true;
                if (calendarItemBase.CalendarItemType != CalendarItemType.RecurringMaster)
                {
                    infobar.AddMessage(-593429293, InfobarMessageType.Informational);
                }
            }
            InfobarMessageBuilder.AddFlag(infobar, calendarItemBase, userContext);
            if (flag)
            {
                if (calendarItemBase.MeetingRequestWasSent)
                {
                    CalendarUtilities.AddAttendeeResponseCountMessage(infobar, calendarItemBase);
                }
                else
                {
                    infobar.AddMessage(613373695, InfobarMessageType.Informational);
                }
            }
            if (!calendarItemBase.IsOrganizer() && calendarItemBase.IsMeeting)
            {
                bool           flag3          = false;
                MeetingRequest meetingRequest = meetingMessage as MeetingRequest;
                if (meetingRequest != null)
                {
                    flag3 = (meetingRequest.MeetingRequestType == MeetingMessageType.PrincipalWantsCopy);
                }
                if (calendarItemBase.ResponseType != ResponseType.NotResponded)
                {
                    Strings.IDs?ds  = null;
                    Strings.IDs?ds2 = null;
                    switch (calendarItemBase.ResponseType)
                    {
                    case ResponseType.Tentative:
                        ds  = new Strings.IDs?(-1859761232);
                        ds2 = new Strings.IDs?(1365345389);
                        break;

                    case ResponseType.Accept:
                        ds  = new Strings.IDs?(-700793833);
                        ds2 = new Strings.IDs?(-1153967082);
                        break;

                    case ResponseType.Decline:
                        ds  = new Strings.IDs?(-278420592);
                        ds2 = new Strings.IDs?(2009978813);
                        break;
                    }
                    if (ds != null)
                    {
                        ExDateTime property = ItemUtility.GetProperty <ExDateTime>(calendarItemBase, CalendarItemBaseSchema.AppointmentReplyTime, ExDateTime.MinValue);
                        string     text     = Strings.None;
                        string     text2    = string.Empty;
                        if (property != ExDateTime.MinValue)
                        {
                            text  = property.ToString(userContext.UserOptions.DateFormat);
                            text2 = property.ToString(userContext.UserOptions.TimeFormat);
                        }
                        string property2 = ItemUtility.GetProperty <string>(calendarItemBase, CalendarItemBaseSchema.AppointmentReplyName, string.Empty);
                        SanitizedHtmlString messageHtml;
                        if (string.Compare(property2, userContext.ExchangePrincipal.MailboxInfo.DisplayName, StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            messageHtml = SanitizedHtmlString.Format(LocalizedStrings.GetHtmlEncoded(ds.Value), new object[]
                            {
                                text,
                                text2
                            });
                        }
                        else
                        {
                            messageHtml = SanitizedHtmlString.Format(LocalizedStrings.GetHtmlEncoded(ds2.Value), new object[]
                            {
                                property2,
                                text,
                                text2
                            });
                        }
                        infobar.AddMessage(messageHtml, InfobarMessageType.Informational);
                        return;
                    }
                }
                else if (!flag2 && !calendarItemBase.IsCancelled)
                {
                    if (!flag3)
                    {
                        bool property3 = ItemUtility.GetProperty <bool>(calendarItemBase, ItemSchema.IsResponseRequested, true);
                        if (property3)
                        {
                            infobar.AddMessage(919273049, InfobarMessageType.Informational);
                        }
                        else
                        {
                            infobar.AddMessage(1602295502, InfobarMessageType.Informational);
                        }
                    }
                    else
                    {
                        infobar.AddMessage(-200304859, InfobarMessageType.Informational);
                    }
                    CalendarUtilities.GetConflictingAppointments(infobar, calendarItemBase, userContext);
                }
            }
        }
예제 #14
0
        // Token: 0x06002FD4 RID: 12244 RVA: 0x001169D4 File Offset: 0x00114BD4
        private static void AddConflictingAppointmentsInfobarMessage(Infobar infobar, AdjacencyOrConflictInfo[] adjacencyOrConflictInfo, UserContext userContext, CalendarItemType calendarItemType, string receivedRepresentingDisplayName, OwaStoreObjectId folderId)
        {
            List <AdjacencyOrConflictInfo> list  = new List <AdjacencyOrConflictInfo>();
            List <AdjacencyOrConflictInfo> list2 = new List <AdjacencyOrConflictInfo>();
            List <AdjacencyOrConflictInfo> list3 = new List <AdjacencyOrConflictInfo>();

            for (int i = 0; i < adjacencyOrConflictInfo.Length; i++)
            {
                AdjacencyOrConflictType adjacencyOrConflictType = adjacencyOrConflictInfo[i].AdjacencyOrConflictType;
                BusyType freeBusyStatus = adjacencyOrConflictInfo[i].FreeBusyStatus;
                if (freeBusyStatus != BusyType.Free)
                {
                    if ((adjacencyOrConflictType & AdjacencyOrConflictType.Conflicts) != (AdjacencyOrConflictType)0)
                    {
                        list.Add(adjacencyOrConflictInfo[i]);
                    }
                    else if ((adjacencyOrConflictType & AdjacencyOrConflictType.Precedes) != (AdjacencyOrConflictType)0)
                    {
                        list2.Add(adjacencyOrConflictInfo[i]);
                    }
                    else if ((adjacencyOrConflictType & AdjacencyOrConflictType.Follows) != (AdjacencyOrConflictType)0)
                    {
                        list3.Add(adjacencyOrConflictInfo[i]);
                    }
                }
            }
            if (list.Count == 0 && list2.Count == 0 && list3.Count == 0)
            {
                return;
            }
            SanitizedHtmlString sanitizedHtmlString = null;

            if (calendarItemType != CalendarItemType.RecurringMaster)
            {
                SanitizingStringBuilder <OwaHtml> sanitizingStringBuilder = new SanitizingStringBuilder <OwaHtml>();
                Strings.IDs localizedId  = 1786149639;
                Strings.IDs localizedId2 = -669919370;
                if (list.Count > 0)
                {
                    if (string.IsNullOrEmpty(receivedRepresentingDisplayName))
                    {
                        sanitizedHtmlString = SanitizedHtmlString.FromStringId(-812272237);
                    }
                    else
                    {
                        sanitizedHtmlString = SanitizedHtmlString.FromStringId(49937409);
                    }
                }
                else if (list2.Count > 0 && list3.Count > 0)
                {
                    if (string.IsNullOrEmpty(receivedRepresentingDisplayName))
                    {
                        sanitizedHtmlString = SanitizedHtmlString.FromStringId(2138994880);
                    }
                    else
                    {
                        sanitizedHtmlString = SanitizedHtmlString.FromStringId(-1207817018);
                    }
                    localizedId  = -1877110893;
                    localizedId2 = 1083835406;
                }
                else if (list2.Count > 0)
                {
                    if (string.IsNullOrEmpty(receivedRepresentingDisplayName))
                    {
                        sanitizedHtmlString = SanitizedHtmlString.FromStringId(-1508975609);
                    }
                    else
                    {
                        sanitizedHtmlString = SanitizedHtmlString.FromStringId(602898401);
                    }
                    localizedId  = 2029212075;
                    localizedId2 = -1796482192;
                }
                else if (list3.Count > 0)
                {
                    if (string.IsNullOrEmpty(receivedRepresentingDisplayName))
                    {
                        sanitizedHtmlString = SanitizedHtmlString.FromStringId(-1710537313);
                    }
                    else
                    {
                        sanitizedHtmlString = SanitizedHtmlString.FromStringId(-996033031);
                    }
                    localizedId  = -608468101;
                    localizedId2 = -1733349590;
                }
                sanitizingStringBuilder.Append("<span id=spnS class=IbL>");
                sanitizingStringBuilder.Append(LocalizedStrings.GetNonEncoded(localizedId));
                sanitizingStringBuilder.Append("</span>");
                sanitizingStringBuilder.Append("<span id=spnH class=IbL style=\"display:none\">");
                sanitizingStringBuilder.Append(LocalizedStrings.GetNonEncoded(localizedId2));
                sanitizingStringBuilder.Append("</span>");
                SanitizingStringBuilder <OwaHtml> sanitizingStringBuilder2 = new SanitizingStringBuilder <OwaHtml>();
                sanitizingStringBuilder2.Append("<div id=\"divCnf\">");
                if (list.Count > 0)
                {
                    sanitizingStringBuilder2.Append <SanitizedHtmlString>(CalendarUtilities.BuildAdjacencyOrConflictSection(list, LocalizedStrings.GetNonEncoded(-1874853770), userContext, folderId));
                }
                if (list2.Count > 0)
                {
                    sanitizingStringBuilder2.Append <SanitizedHtmlString>(CalendarUtilities.BuildAdjacencyOrConflictSection(list2, LocalizedStrings.GetNonEncoded(2095567903), userContext, folderId));
                }
                if (list3.Count > 0)
                {
                    sanitizingStringBuilder2.Append <SanitizedHtmlString>(CalendarUtilities.BuildAdjacencyOrConflictSection(list3, LocalizedStrings.GetNonEncoded(-51439729), userContext, folderId));
                }
                sanitizingStringBuilder2.Append("</div>");
                if (!string.IsNullOrEmpty(receivedRepresentingDisplayName))
                {
                    sanitizedHtmlString = SanitizedHtmlString.Format(sanitizedHtmlString.ToString(), new object[]
                    {
                        receivedRepresentingDisplayName
                    });
                }
                infobar.AddMessage(sanitizedHtmlString, InfobarMessageType.Expanding, "divIbL", sanitizingStringBuilder.ToSanitizedString <SanitizedHtmlString>(), sanitizingStringBuilder2.ToSanitizedString <SanitizedHtmlString>());
                return;
            }
            if (list.Count > 0)
            {
                sanitizedHtmlString = SanitizedHtmlString.FromStringId(890561325);
            }
            else if (list2.Count > 0 || list3.Count > 0)
            {
                sanitizedHtmlString = SanitizedHtmlString.FromStringId(1923039961);
            }
            infobar.AddMessage(sanitizedHtmlString, InfobarMessageType.Informational);
        }
예제 #15
0
        public void CopyOrMoveAppointment()
        {
            ExTraceGlobals.MailCallTracer.TraceDebug((long)this.GetHashCode(), "CalendarViewEventHandler.CrossCalendarCopyMove");
            OwaStoreObjectId owaStoreObjectId  = (OwaStoreObjectId)base.GetParameter("Id");
            string           changeKey         = (string)base.GetParameter("CK");
            OwaStoreObjectId owaStoreObjectId2 = (OwaStoreObjectId)base.GetParameter("fId");
            bool             flag             = (bool)base.GetParameter("fC");
            StoreObjectId    storeObjectId    = owaStoreObjectId2.StoreObjectId;
            CalendarItemBase calendarItemBase = null;

            if (Utilities.IsELCRootFolder(owaStoreObjectId2, base.UserContext))
            {
                throw new OwaInvalidRequestException("Cannot move messages to the root ELC folder.");
            }
            if (owaStoreObjectId.IsGSCalendar)
            {
                throw new OwaInvalidRequestException("Item id cannot be GS Calendar folder id");
            }
            if (owaStoreObjectId2.IsGSCalendar)
            {
                throw new OwaInvalidRequestException("Cannot copy/move to GS Calendar");
            }
            MailboxSession mailboxSession = owaStoreObjectId2.GetSessionForFolderContent(base.UserContext) as MailboxSession;

            if (mailboxSession == null)
            {
                throw new OwaInvalidRequestException("Cannot copy/move to public folder by this function");
            }
            if (storeObjectId.ObjectType != StoreObjectType.CalendarFolder)
            {
                throw new OwaInvalidRequestException("This function only support to copy/move to calendar folder");
            }
            try
            {
                calendarItemBase = Utilities.GetItem <CalendarItemBase>(base.UserContext, owaStoreObjectId, changeKey, new PropertyDefinition[]
                {
                    StoreObjectSchema.EffectiveRights
                });
                if (calendarItemBase.ParentId.Equals(storeObjectId))
                {
                    this.RenderCopyMoveFail(-612884101);
                }
                else
                {
                    MailboxSession mailboxSession2 = calendarItemBase.Session as MailboxSession;
                    if (mailboxSession2 == null)
                    {
                        throw new OwaInvalidRequestException("Cannot copy/move from public folder by this function");
                    }
                    if (!StringComparer.OrdinalIgnoreCase.Equals(mailboxSession2.MailboxOwner.LegacyDn, mailboxSession.MailboxOwner.LegacyDn))
                    {
                        if (flag)
                        {
                            this.RenderCopyMoveFail(-1539006262);
                        }
                        else
                        {
                            this.RenderCopyMoveFail(1992576846);
                        }
                    }
                    else
                    {
                        bool flag2 = Utilities.CanCreateItemInFolder(base.UserContext, owaStoreObjectId2) && !Utilities.IsExternalSharedInFolder(base.UserContext, owaStoreObjectId2);
                        if (!flag)
                        {
                            flag2 = (flag2 && CalendarUtilities.UserCanDeleteCalendarItem(calendarItemBase) && !Utilities.IsItemInExternalSharedInFolder(base.UserContext, calendarItemBase));
                        }
                        if (!flag2)
                        {
                            ExTraceGlobals.CalendarTracer.TraceDebug(0L, "User have no rights to remove item from source folder or create new item in target folder.");
                            this.Writer.Write("<div id=divOp _sOp=\"np\"></div>");
                        }
                        else
                        {
                            if (flag)
                            {
                                calendarItemBase.CopyToFolder(mailboxSession, storeObjectId);
                            }
                            else
                            {
                                calendarItemBase.MoveToFolder(mailboxSession, storeObjectId);
                            }
                            this.Writer.Write("<div id=divOp _sOp=\"rf\"></div>");
                            TargetFolderMRU.AddAndGetFolders(owaStoreObjectId2, base.UserContext);
                        }
                    }
                }
            }
            catch (CalendarItemExistsException)
            {
                this.RenderCopyMoveFail(-95861205);
            }
            catch (FutureMeetingException)
            {
                this.RenderCopyMoveFail(((bool)base.GetParameter("rcr")) ? 225743507 : -989731968);
            }
            catch (PrimaryCalendarFolderException)
            {
                this.RenderCopyMoveFail(-812685732);
            }
            catch (ObjectNotFoundException)
            {
                ExTraceGlobals.CalendarDataTracer.TraceDebug((long)this.GetHashCode(), "Calendar item could not be found");
                throw;
            }
            finally
            {
                if (calendarItemBase != null)
                {
                    calendarItemBase.Dispose();
                    calendarItemBase = null;
                }
            }
        }
예제 #16
0
        // Token: 0x060025A2 RID: 9634 RVA: 0x000D9F24 File Offset: 0x000D8124
        public void AddSharingInfoToInfobar(Infobar infobar)
        {
            if (this.disableSharingButton)
            {
                return;
            }
            ExDateTime?sharingLastSubscribeTime = this.sharingMessage.SharingLastSubscribeTime;

            if (sharingLastSubscribeTime != null)
            {
                infobar.AddMessage(SanitizedHtmlString.Format(LocalizedStrings.GetHtmlEncoded(388258761), new object[]
                {
                    sharingLastSubscribeTime.Value.ToString(this.userContext.UserOptions.DateFormat),
                    sharingLastSubscribeTime.Value.ToString(this.userContext.UserOptions.TimeFormat)
                }), InfobarMessageType.Informational, "divInfoAddCal");
            }
            if (this.sharingMessage.SharingMessageType.IsResponseToRequest)
            {
                this.AddResponseMessageInfobarToResponseMessage(infobar);
                return;
            }
            if (this.sharingMessage.SharingMessageType.IsInvitationOrRequest)
            {
                if (this.sharingMessage.SharingResponseType == SharingResponseType.None)
                {
                    Strings.IDs localizedID;
                    if (this.sharingMessage.SharingMessageType == SharingMessageType.InvitationAndRequest)
                    {
                        localizedID = 910454547;
                    }
                    else if (this.sharingMessage.SharingMessageType == SharingMessageType.Invitation)
                    {
                        if (!this.sharingMessage.IsPublishing)
                        {
                            localizedID = 176723821;
                        }
                        else if (CalendarUtilities.CanSubscribeInternetCalendar())
                        {
                            if (string.IsNullOrEmpty(this.sharingMessage.BrowseUrl))
                            {
                                localizedID = 1455056454;
                            }
                            else
                            {
                                localizedID = 1017528788;
                            }
                        }
                        else
                        {
                            localizedID = -464342883;
                        }
                    }
                    else
                    {
                        localizedID = -2085372735;
                    }
                    infobar.AddMessage(SanitizedHtmlString.Format(LocalizedStrings.GetHtmlEncoded(localizedID), new object[]
                    {
                        this.sharingMessage.InitiatorName
                    }), InfobarMessageType.Informational);
                    return;
                }
                this.AddResponseMessageInfobarToRequestMessage(infobar);
            }
        }
예제 #17
0
 // Token: 0x06002755 RID: 10069 RVA: 0x000E03B5 File Offset: 0x000DE5B5
 protected void RenderCancelRecurrenceMeetingDialog()
 {
     CalendarUtilities.RenderCancelRecurrenceMeetingDialog(base.SanitizingResponse, true);
 }
예제 #18
0
        public void Delete()
        {
            ExTraceGlobals.CalendarCallTracer.TraceDebug((long)this.GetHashCode(), "CalendarViewEventHandler.Delete");
            OwaStoreObjectId owaStoreObjectId  = (OwaStoreObjectId)base.GetParameter("Id");
            OwaStoreObjectId owaStoreObjectId2 = (OwaStoreObjectId)base.GetParameter("fId");
            Item             item             = null;
            CalendarItemBase calendarItemBase = null;
            bool             flag             = true;

            try
            {
                item = Utilities.GetItem <Item>(base.UserContext, owaStoreObjectId, new PropertyDefinition[]
                {
                    StoreObjectSchema.EffectiveRights,
                    CalendarItemBaseSchema.MeetingRequestWasSent,
                    CalendarItemBaseSchema.IsOrganizer
                });
                calendarItemBase = (item as CalendarItemBase);
                if (calendarItemBase != null)
                {
                    if (!CalendarUtilities.UserCanDeleteCalendarItem(calendarItemBase) || Utilities.IsItemInExternalSharedInFolder(base.UserContext, calendarItemBase))
                    {
                        base.ResponseContentType = OwaEventContentType.Html;
                        this.Writer.Write("<div id=divOp _sOp=np></div>");
                        flag = false;
                    }
                    else if (!base.IsParameterSet("FD") && calendarItemBase.IsMeeting && calendarItemBase.MeetingRequestWasSent && calendarItemBase.IsOrganizer())
                    {
                        base.ResponseContentType = OwaEventContentType.Html;
                        this.Writer.Write("<div id=divOp _sOp=sc></div>");
                        flag = false;
                    }
                    else if (!base.IsParameterSet("FD") && !calendarItemBase.IsOrganizer() && !calendarItemBase.IsCancelled && !MeetingUtilities.IsCalendarItemEndTimeInPast(calendarItemBase))
                    {
                        base.ResponseContentType = OwaEventContentType.Html;
                        this.Writer.Write("<div id=divOp _sOp=sr></div>");
                        flag = false;
                    }
                    else if (!base.IsParameterSet("FD") && (owaStoreObjectId2.IsOtherMailbox || owaStoreObjectId2.IsGSCalendar))
                    {
                        base.ResponseContentType = OwaEventContentType.Html;
                        this.Writer.Write("<div id=divOp _sOp=sn></div>");
                        flag = false;
                    }
                }
                else if (!ItemUtility.UserCanDeleteItem(item))
                {
                    base.ResponseContentType = OwaEventContentType.Html;
                    this.Writer.Write("<div id=divOp _sOp=np></div>");
                    flag = false;
                }
                if (flag)
                {
                    bool flag2 = false;
                    if (base.IsParameterSet("Ntfy"))
                    {
                        flag2 = (bool)base.GetParameter("Ntfy");
                    }
                    if (flag2)
                    {
                        PrincipalNotificationMessage principalNotificationMessage = new PrincipalNotificationMessage(owaStoreObjectId.ToBase64String(), owaStoreObjectId2, base.UserContext, this.HttpContext, PrincipalNotificationMessage.ActionType.Delete, false, calendarItemBase.IsMeeting);
                        principalNotificationMessage.SendNotificationMessage();
                    }
                    bool flag3 = false;
                    if (base.IsParameterSet("Prm"))
                    {
                        flag3 = (bool)base.GetParameter("Prm");
                    }
                    DeleteItemFlags deleteItemFlags = DeleteItemFlags.None;
                    if (!owaStoreObjectId2.IsPublic)
                    {
                        if (calendarItemBase.IsOrganizer())
                        {
                            if (calendarItemBase.IsMeeting)
                            {
                                goto IL_269;
                            }
                            deleteItemFlags = DeleteItemFlags.CancelCalendarItem;
                            MeetingCancellation meetingCancellation = null;
                            try
                            {
                                try
                                {
                                    calendarItemBase.OpenAsReadWrite();
                                    meetingCancellation = calendarItemBase.CancelMeeting(null, null);
                                }
                                catch (ObjectNotFoundException)
                                {
                                }
                                catch (AccessDeniedException)
                                {
                                }
                                goto IL_269;
                            }
                            finally
                            {
                                if (meetingCancellation != null)
                                {
                                    meetingCancellation.Dispose();
                                }
                                meetingCancellation = null;
                            }
                        }
                        deleteItemFlags = DeleteItemFlags.DeclineCalendarItemWithoutResponse;
                    }
IL_269:
                    calendarItemBase.DeleteMeeting((flag3 ? DeleteItemFlags.SoftDelete : DeleteItemFlags.MoveToDeletedItems) | deleteItemFlags);
                    this.RenderPayload(new OwaStoreObjectId[]
                    {
                        owaStoreObjectId2
                    });
                }
            }
            catch (ObjectNotFoundException)
            {
                ExTraceGlobals.CalendarDataTracer.TraceDebug((long)this.GetHashCode(), "Calendar item could not be found.");
                throw;
            }
            finally
            {
                if (item != null)
                {
                    item.Dispose();
                    item = null;
                }
            }
        }
예제 #19
0
 // Token: 0x06002FD6 RID: 12246 RVA: 0x001170B8 File Offset: 0x001152B8
 public static void RenderCancelRecurrenceMeetingDialog(TextWriter output, bool showCancelOccurrence)
 {
     CalendarUtilities.RenderCancelRecurrenceCalendarItemDialog(output, showCancelOccurrence, true, false, false);
 }
예제 #20
0
 // Token: 0x0600291E RID: 10526 RVA: 0x000E8EE8 File Offset: 0x000E70E8
 protected void RenderReminderDropdownList()
 {
     CalendarUtilities.RenderReminderDropdownList(base.Response.Output, base.Item, this.MeetingPageWriter.ReminderIsSet, base.IsEmbeddedItem || this.DisableOccurrenceReminderUI || this.IsPublicItem || !this.CanEdit);
 }
예제 #21
0
 // Token: 0x0600291F RID: 10527 RVA: 0x000E8F3A File Offset: 0x000E713A
 protected void RenderBusyTypeDropdownList()
 {
     CalendarUtilities.RenderBusyTypeDropdownList(base.Response.Output, base.Item, base.IsEmbeddedItem || !this.CanEdit);
 }
예제 #22
0
 protected void RenderReminderDropdownList()
 {
     CalendarUtilities.RenderReminderDropdownList(base.SanitizingResponse, this.calendarItemBase, this.ReminderIsSet, this.DisableOccurrenceReminderUI || this.IsPublicItem);
 }
예제 #23
0
 // Token: 0x06002FE3 RID: 12259 RVA: 0x001177EC File Offset: 0x001159EC
 public static ExDateTime[] GetWeekDays(OwaStoreObjectId folderId, UserContext userContext, ExDateTime dayInWeek, bool isWorkWeek)
 {
     ExDateTime[] weekFromDay;
     if (isWorkWeek)
     {
         weekFromDay = DateTimeUtilities.GetWeekFromDay(dayInWeek, userContext.UserOptions.WeekStartDay, CalendarUtilities.GetWorkDays(userContext, folderId), true);
     }
     else
     {
         weekFromDay = DateTimeUtilities.GetWeekFromDay(dayInWeek, userContext.UserOptions.WeekStartDay, 0, false);
     }
     return(weekFromDay);
 }
예제 #24
0
 protected internal override void BuildInfobar()
 {
     CalendarUtilities.AddCalendarInfobarMessages(this.FormInfobar, this.CalendarItemBase, null, this.UserContext);
 }